cmake的:选择内的CMakeLists.txt发电机(cmake: Selecting a ge

2019-06-25 22:09发布

我想迫使CMake的使用“Unix的Makefile文件” 发电机从内部的CMakeLists.txt。

这是我现在使用的命令。

cmake -G "Unix Makefiles" .

我想它是这样。

cmake .

在Windows下运行安装VC和一个自定义的工具链。

我希望是,能够设置在发电机中CMakeLists.txt文件。

也许是这样的。

set(CMAKE_GENERATOR "Unix Makefiles")

Answer 1:

这里是为我工作-在装有该项目目录创建一个名为PreLoad.cmake文件:

set (CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)



Answer 2:

在我看来,这个变量CMAKE_GENERATOR设置为时已晚,如果设置在CMakeLists.txt 。 如果你使用(甚至在年初CMakeLists.txt

set(CMAKE_GENERATOR "Ninja")
message("generator is set to ${CMAKE_GENERATOR}")

你可以在输出看到的东西像

% cmake ../source
-- The C compiler identification is GNU 4.9.2
...
-- Detecting CXX compile features - done
generator is set to Ninja
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/build

所以变量设置为仅在生成过程的末尾。 如果你使用类似

set(CMAKE_GENERATOR "Ninja" CACHE INTERNAL "" FORCE)

CMakeLists.txt ,然后在的非常第一次运行cmake ../source (无-G )的默认发生器被使用。 变量CMAKE_GENERATOR被存储在缓存中,虽然。 所以,如果你重新运行cmake ../source之后,它会在指定的使用发电机CMAKE_GENERATOR缓存中的变量。

这肯定不是最完美的解决方案,虽然;-)也许使用,将实际执行的批处理文件cmake -G generator用户...



Answer 3:

这不是我所得到的,当我运行相同的命令,cmake的将寻找一个gcc编译/ make工具。 如果没有设置PATH正确地将失败的东西,如:

D:\Development\build>cmake -G "Unix Makefiles" ..\source
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.
  You probably need to select a different build tool.
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file:D:/Development/build/CMakeFiles/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file:D:/Development/build/CMakeFiles/CMakeCXXCompiler.cmake
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

当GCC / MinGW的是路径,然后一切工作正常。 所以,你能提供更多的信息,你的PATH变量或CMake的版本?



文章来源: cmake: Selecting a generator within CMakeLists.txt
标签: cmake