尝试在Windows 7中构建nanomsg project时出现错误:
cmake ..
-- Building for: NMake Makefiles
-- The C compiler identification is GNU 4.7.1
-- Check for working C compiler: C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe
CMake Error: Generator: execution of make failed. Make command was: "nmake" "/NOLOGO" "cmTC_5d837\fast"
-- Check for working C compiler: C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe -- broken
CMake Error at C:/Program Files (x86)/cmake-3.9.4-win64-x64/share/cmake-3.9/Modules/CMakeTestCCompiler.cmake:51 (message):
The C compiler "C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe" is not
able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/User/Documents/Internal/nanomsg-master/build/CMakeFiles/CMakeTmp
Run Build Command:"nmake" "/NOLOGO" "cmTC_5d837\fast"
Generator: execution of make failed. Make command was: "nmake" "/NOLOGO"
"cmTC_5d837\fast"
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:29 (project)
-- Configuring incomplete, errors occurred!
See also "C:/Users/User/Documents/Internal/nanomsg-master/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/User/Documents/Internal/nanomsg-master/build/CMakeFiles/CMakeError.log".
我使用来自gcc
工具链的make
编译器和Mingw
,我可以在一个简单的示例中成功运行gcc.exe
和mingw32-make.exe
。
在文件CMakeCache.txt
中,缓存变量设置如下:
//C compiler
CMAKE_C_COMPILER:FILEPATH=C:/Program Files (x86)/CodeBlocks/MinGW/bin/gcc.exe
//Program used to build from makefiles.
CMAKE_MAKE_PROGRAM:STRING=nmake
我认为问题来自CMAKE_MAKE_PROGRAM
变量,它应该采用C:/Program Files (x86)/CodeBlocks/MinGW/bin/mingw32-make.exe
,但我不知道它从哪里得到值nmake
。
即使我手动更换它也会遇到同样的问题。
我的问题:
CMAKE_MAKE_PROGRAM
取值nmake
?答案 0 :(得分:0)
CMake 根据 CMakeLists.txt
中的内容以及它包含的任何文件以及提供给 -D
的任何 cmake
参数,使用它检测到的值填充缓存文件。
在 Windows 上,CMake 将默认使用 Microsoft 的 nmake
工具。覆盖它的方法是将参数 -G"MinGW Makefiles"
传递给 cmake
,或者如果您使用 MSYS shell -G"MSYS Makefiles"
。
但是有比 make´ called Ninja (get it from https://ninja-build.org/) which you can use by passing
-GNinjato
cmake` 更快的构建工具。
注意:我看到您正在使用 Code::Blocks 附带的旧 MinGW。 MinGW 有一个最新的继承者 MinGW-w64,它支持 Windows 32 位和 64 位。最近的独立版本可以从 https://winlibs.com/ 下载,它还包括 ninja.exe
。
P.S.:如果您在遵循这些提示后在构建 nanomsg 源时遇到更多问题,请考虑将 -DNN_TESTS:BOOL=OFF
传递给 cmake