使用cmake在Windows上构建clang,WinMain引用未定义

时间:2017-02-03 15:08:19

标签: c++ windows clang mingw-w64

我正在尝试使用windows(10)上的mingw-w64构建clang,所以我按照本教程:https://here-be-braces.com/blog/llvm-clang-on-windows-mingw-revisited 但是cmake不承认gcc是C ++ 11编译器。我用这个命令运行cmake:

cmake C:\llvm -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_TOOLS=ON -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_EH=ON -DLLVM_ENABLE_RTTI=ON -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS="-IC:/mingw64/x86_64-w64-mingw32/include" -DGCC_INSTALL_PREFIX=%syspath% -DCMAKE_INSTALL_PREFIX=%syspath% -DCMAKE_EXE_LINKER_FLAGS="-lmingw32 -static-libgcc -static-libstdc++ -static -lstdc++ -lm -lpthread  -lgcc -lmsvcrt -lmoldname -lgcc_eh -lkernel32 -luser32 -ladvapi32 -liconv -lmingwex" -DBUILD_SHARED_LIBS=OFF -DLLVM_PARALLEL_COMPILE_JOBS=2 -DLLVM_PARALLEL_LINK_JOBS=2 -DCMAKE_INCLUDE_PATH="C:/mingw64/x86_64-w64-mingw32/include" -DGCC_INSTALL_PREFIX="C:/mingw64" -DCMAKE_LIBRARY_PATH="C:/mingw64/x86_64-w64-mingw32/lib"

我用“gcc -v test.c -Wl, - verbose”来查看librairies列表,test.c只是一个经典的hello世界。但是使用libmingw32,我收到了这个错误:

  

cmd.exe / C“cd。&& C:\ mingw64 \ bin \ gcc.exe -lmingw32 -static-libgcc   -static-libstdc ++ -static -lstdc ++ -lm -lpthread -lgcc -lmsvcrt -lmoldname   -lgcc_eh -lkernel32 -luser32 -ladvapi32 -liconv -lmingwex   CMakeFiles / cmTC_3b639.dir / testCCompiler.c.obj -o cmTC_3b639.exe   轮候册, - 出IMPLIB,libcmTC_3b639.dll.a   -Wl, - major-image-version,0, - minor-image-version,0 -lkernel32 -luser32   -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32   -ladvapi32&& cd。“

     

CMakeFiles / cmTC_3b639.dir / testCCompiler.c.obj:testCCompiler.c :(文本+为0x0):

     

“main”的多重定义

     

C:/ mingw64 / bin中/../ LIB / GCC / x86_64的-W64-的mingw32 / 6.2.0 /../../../../ x86_64的-W64-的mingw32 / lib中/../ LIB \ libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c :( text.startup +为0x0):

     

首先在这里定义

     

C:/ mingw64 / bin中/../ LIB / GCC / x86_64的-W64-的mingw32 / 6.2.0 /../../../../ x86_64的-W64-的mingw32 / lib中/../ LIB \ libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c :( text.startup + 0x2E之间):

     

未定义的对“WinMain”的引用

     

collect2.exe:错误:ld返回1退出状态

     

忍者:构建已停止:子命令失败。

没有它,我会更进一步,但我得到了这个:http://pastebin.com/zeMViHzA

  

项目/ libcxx / CMakeLists.txt的CMake错误:423(消息):

     

需要C ++ 11或更高版本,但编译器不支持c ++ 11

如何摆脱cmake测试的“WinMain未定义参考”?

编辑:gcc版本:6.2.0

0 个答案:

没有答案