什么会导致 CMake 选项不起作用?
What can cause a CMake option not work?
我正在准备一个可以使用和不使用 GUI 的应用程序,所以我在 CMakeLists.txt 中使用命令
option (NEED_GUI "Include Qt support" OFF)
和
if (NEED_GUI)
message("****GUI should be OFF****")
add_subdirectory(QtGUI) # The Qt-based graphics routines
endif (NEED_GUI)
尽管我将选项设置为 OFF,但我收到了消息并且库已构建。在哪里查找错误?
将我的评论变成答案
您的代码看起来不错。所以我假设这里的问题是 option()
确实通过初始配置步骤将给定的值传输到您的 CMakeCache.txt
中。之后,您只能通过修改 NEED_GUI
的缓存条目来更改它。在生成构建环境后更改 CMakeLists.txt
中的选项将不会再更新缓存。
参考资料
- Advantages of using CMake option command rather than set?
- How to tell whether CMake used initial value for an option?
if (NEED_GUI MATCHES ON)
是正确的用法,而不是
if (NEED_GUI)
我正在准备一个可以使用和不使用 GUI 的应用程序,所以我在 CMakeLists.txt 中使用命令
option (NEED_GUI "Include Qt support" OFF)
和
if (NEED_GUI)
message("****GUI should be OFF****")
add_subdirectory(QtGUI) # The Qt-based graphics routines
endif (NEED_GUI)
尽管我将选项设置为 OFF,但我收到了消息并且库已构建。在哪里查找错误?
将我的评论变成答案
您的代码看起来不错。所以我假设这里的问题是 option()
确实通过初始配置步骤将给定的值传输到您的 CMakeCache.txt
中。之后,您只能通过修改 NEED_GUI
的缓存条目来更改它。在生成构建环境后更改 CMakeLists.txt
中的选项将不会再更新缓存。
参考资料
- Advantages of using CMake option command rather than set?
- How to tell whether CMake used initial value for an option?
if (NEED_GUI MATCHES ON)
是正确的用法,而不是
if (NEED_GUI)