我在尝试构建时遇到错误纳米信息项目 https://github.com/nanomsg/nanomsg在 Windows 7 中:
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".
I use gcc
编译器和make
from Mingw
工具链,我可以成功运行gcc.exe
and 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如何填充Cache变量?
- Why
CMAKE_MAKE_PROGRAM
取值nmake
?
- 为什么手动更改此变量无法解决问题?
CMake 使用它根据内容检测到的值填充缓存文件CMakeLists.txt
以及它包含的任何文件与任何-D
提供给参数cmake
.
在 Windows 上 CMake 将默认为 Microsoft 的nmake
工具。覆盖它的方法是通过传递参数-G"MinGW Makefiles"
to cmake
,或者如果您使用 MSYS shell-G"MSYS Makefiles"
.
但有一个比它更快的构建工具make
称为忍者(从https://ninja-build.org/ https://ninja-build.org/)你可以通过传递来使用-GNinja
to cmake
.
注意:我发现您正在使用 Code::Blocks 附带的旧 MinGW。 MinGW 有一个更新的后续版本,称为 MinGW-w64,它支持 Windows 32 位和 64 位。最近的独立版本可以从以下位置下载https://winlibs.com/ https://winlibs.com/并且它还包括ninja.exe
.
P.S.:如果您在遵循这些提示后构建 nanomsg 源时遇到更多问题,请考虑通过-DNN_TESTS:BOOL=OFF
to cmake
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)