当我尝试在Windows 7上构建nanomsg项目时,我遇到了错误:
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".
我使用来自Mingw工具链的gcc编译器和make,并且可以在简单示例中成功运行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 如何填充缓存变量?
- 为什么
CMAKE_MAKE_PROGRAM
取值为nmake
? - 为什么手动更改此变量没有解决问题?
-G“MinGW Makefiles”
,并且 - 根据您安装了多少编译器 - 还需要指定编译器的完整路径。 - Floriannmake
是微软的 make 工具。您可以从 Visual C++ 2015 Build Tools 获取它的副本。您不再需要下载 Visual Studio 或处理过期试用版。Build Tools 是 Visual Studio 工具的子集,其中包括编译器、链接器、nmake 和一些其他 Windows 必备工具。 - jww