On Thu, Mar 10, 2016 at 12:48 AM, Anton Yartsev <anton.yart...@gmail.com> wrote:
> Oops, sorry, confused with different variants. > > I've tried > $SET CC=D:\LLVM-3.7.1\bin\clang-cl.exe > $SET CXX=D:\LLVM-3.7.1\bin\clang-cl.exe > $cmake -G "Ninja" .. > > Compilation succeeded, linkage has ended up with "clang-cl.exe: error: > unable to execute command: program not executable". > The same result with clang-cl.exe renamed to cl.exe. > Hi Anton, My setup is: * Visual Studio 2013 x86 and amd64 * Clang 3.7.1 64 bit installed in c:\Program Files\LLVM\ * CMake 3.5.0 * Ninja 1.5.3 * C++ Hello World CMake project Visual Studio 2013 amd64 ==================== 1. Opened a command prompt and run "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" amd64 2. set INCLUDE=c:\Program Files\LLVM\lib\clang\3.7.1\include\;%INCLUDE% 3. set PATH=c:\Program Files\LLVM\msbuild-bin\;%PATH% 4. cmake -G "Ninja" ..\helloworldcmake CMake output was: $ cmake -G "Ninja" ..\helloworldcmake -- The C compiler identification is Clang 3.7.1 -- The CXX compiler identification is Clang 3.7.1 -- Check for working C compiler using: Ninja -- Check for working C compiler using: Ninja -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler using: Ninja -- Check for working CXX compiler using: Ninja -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - failed -- Configuring done -- Generating done -- Build files have been written to: C:/Projects/C++/helloworldcmake-build Visual Studio 2013 x86 ================= 1. Opened a command prompt and run "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 2. set INCLUDE=c:\Program Files\LLVM\lib\clang\3.7.1\include\;%INCLUDE% 3. set PATH=c:\Program Files\LLVM\msbuild-bin\;%PATH% 4. cmake -G "Ninja" ..\helloworldcmake CMake output was: $ cmake -G "Ninja" ..\helloworldcmake -- The C compiler identification is Clang 3.7.1 -- The CXX compiler identification is Clang 3.7.1 -- Check for working C compiler using: Ninja -- Check for working C compiler using: Ninja -- broken CMake Error at C:/Tools/cmake-3.5.0/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake:61 (message): The C compiler "C:/Program Files/LLVM/msbuild-bin/cl.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: C:/Projects/C++/helloworldcmake-build/CMakeFiles/CMakeTmp Run Build Command:"C:/Tools/ninja/ninja.exe" "cmTC_89c35" [1/2] Building C object CMakeFiles\cmTC_89c35.dir\testCCompiler.c.obj [2/2] Linking C executable cmTC_89c35.exe FAILED: cmd.exe /C "cd . && C:\Tools\cmake-3.5.0\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_89c35.dir --manifests -- C:\PROGRA~2\MICROS~3.0\VC\bin\link.exe /nologo CMakeFiles\cmTC_89c35.dir\testCCompiler.c.obj /out:cmTC_89c35.exe /implib:cmTC_89c35.lib /pdb:cmTC_89c35.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ." LINK : error LNK2001: unresolved external symbol mainCRTStartup cmTC_89c35.exe : fatal error LNK1120: 1 unresolved externals LINK Pass 1 failed. with 1120 ninja: build stopped: subcommand failed. CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:1 (project) -- Configuring incomplete, errors occurred! See also "C:/Projects/C++/helloworldcmake-build/CMakeFiles/CMakeOutput.log". See also "C:/Projects/C++/helloworldcmake-build/CMakeFiles/CMakeError.log". Clang people say that both Clang builds (32 or 64 bit) can compile both 32 and 64 bit applications. [1] As it turns out this statement is not completely true :) I've installed the 32 bit Clang 3.7.1 version to c:\Program Files (x86)\LLVM\ and tried again: Visual Studio 2013 x86 ================= 1. Opened a command prompt and run "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86 2. set INCLUDE=c:\Program Files (x86)\LLVM\lib\clang\3.7.1\include\;%INCLUDE% 3. set PATH=c:\Program Files (x86)\LLVM\msbuild-bin\;%PATH% 4. cmake -G "Ninja" ..\helloworldcmake This time the CMake output was: $ cmake -G "Ninja" ..\helloworldcmake -- The C compiler identification is Clang 3.7.1 -- The CXX compiler identification is Clang 3.7.1 -- Check for working C compiler using: Ninja -- Check for working C compiler using: Ninja -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler using: Ninja -- Check for working CXX compiler using: Ninja -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - failed -- Configuring done -- Generating done -- Build files have been written to: C:/Projects/C++/helloworldcmake-build This means that you have to match your Visual C++ compiler with the Clang one! And as you can see, I didn't set any CC, CCX, CMAKE_C_COMPILER_ID or CMAKE_CXX_COMPILER_ID variables. Cheers, Cristian. [1] https://llvm.org/bugs/show_bug.cgi?id=26212#c5
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake