2016-12-20 4 views
-1

Я строю проект на C++ с Clang 3.8 и CMake 3.7 в Windows, но Clang испускает ошибку в configure, как показано ниже.Clang и CMake на Windows

 
    Determining if the CXX compiler works failed with the following output: 
    Change Dir: C:/tools/k.build/CMakeFiles/CMakeTmp 

    Run Build Command:"C:/tools/ninja.exe" "cmTC_c0004" 
    [1/2] Building CXX object CMakeFiles/cmTC_c0004.dir/testCXXCompiler.cxx.obj 
    [2/2] Linking CXX executable cmTC_c0004.exe 

    FAILED: cmTC_c0004.exe 

    cmd.exe /C "cd . && C:\tools\llvm-3.8.1.build\Release\bin\clang++.exe  CMakeFiles/cmTC_c0004.dir/testCXXCompiler.cxx.obj -o cmTC_c0004.exe -Wl,--out-implib,libcmTC_c0004.dll.a -Wl,--major-image-version,0,--minor-image-version,0 && cd ." 

    LINK : warning LNK4044: unrecognized option '/-out-implib'; ignored 
    LINK : warning LNK4044: unrecognized option '/-major-image-version'; ignored 
    LINK : warning LNK4044: unrecognized option '/-minor-image-version'; ignored 
    LINK : fatal error LNK1181: cannot open input file 'libcmTC_c0004.dll.a' 

    clang++.exe: error: linker command failed with exit code 1181 (use -v to see invocation) 

    ninja: build stopped: subcommand failed. 

Странно, что в CMakeFiles/CMakeTmp/файла нет файлов. Как я могу заставить его работать?

+2

Вы пытались удалить двоичный вывод 'k.build' и снова попробовать с нуля? Похоже, вы включили компиляторы, например. от 'gcc' до' clang' в том же выходном каталоге. Вы также можете попробовать минимальный пример, например [здесь] (http://stackoverflow.com/questions/38171878/how-do-i-tell-cmake-to-use-clang-on-windows). – Florian

+0

Как-то ваша конфигурация сломана. Параметры, начинающиеся с '/ -', являются неправильными, а' .dll.a' выглядит странно. Как вы ссылаетесь на CMake? Какой компилятор это обнаруживает? – usr1234567

+0

@Florian Да, я удалил выходы в k.build и пробовал некоторые другие настройки снова и снова. Проекты были разработаны для Linux, и я переношу их в Windows. – HenryK

ответ

0

Проще говоря, вы определяете свою инструментальную цепочку неправильно. CMake считает, что вы используете компилятор MSVC с другим путем. Подробный ответ см. В разделе this question. Обратите внимание, что вам все равно понадобятся MSVC или Cygwin в качестве среды сборки.

+0

Вы имеете в виду, что MSVC или Cygwin требуется как CMAKE_GENERATOR? Ниндзя нельзя использовать? – HenryK

+0

Не знаю. Связанный вопрос указывает, что требуется менеджер сборки, такой как MSVC или Cygwin. Я знаю, что CMake добавил поддержку Ninja, поскольку на этот вопрос был дан ответ. Я думаю, что главное - добавить информацию о наборе инструментов так, как подсказывает ответ, а не метод, который вы использовали. –

Смежные вопросы