如何在命令行中设置CMake的option()选项

153

我创建了一个包含以下内容的CMakeLists.txt文件

project(P4V)
cmake_minimum_required(VERSION 2.6)

option(BUILD_STATIC_LIBS "Build the static library" ON)
option(BUILD_SHARED_LIBS "Build the shared library" ON)
option(BUILD_TESTS "Build test programs" OFF)

include_directories(${CMAKE_SOURCE_DIR}/include)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_BUILD_TYPE Release)

add_subdirectory(src)
if(BUILD_TESTS)
    add_subdirectory(tests)
endif(BUILD_TESTS)

默认情况下BUILD_TESTS为OFF,我如何在没有CMake GUI的情况下将其打开,但使用CMake命令本身? 我尝试了以下方法,但它不起作用

默认情况下BUILD_TESTS为OFF,我如何在没有CMake GUI的情况下通过使用CMake命令自己将其打开。 我已经尝试了以下命令,但它并未生效:

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON

35
..参数之前列出你的标志。 - arrowd
2
可能是 https://dev59.com/o2025IYBdhLWcg3wclq- 的重复问题。 - dharman
1
你在重新运行cmake之前是否删除了CMakeCache.txt文件? - Henry Hu
1
可能是向CMake添加命令行选项的重复问题。 - jww
1
@Denilson Amorim,你命令行中的“%1”是什么意思? - John
显示剩余2条评论
3个回答

160

删除 CMakeCache.txt 文件并尝试以下操作:

cmake -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON ..

在包含路径之前,您必须输入所有命令行定义。


如何明确指定“关闭”?我似乎无法将CUDA选项关闭。 - Ébe Isaac
9
如果您想明确地关闭某个选项,只需使用“-DOPTION=OFF”。 - Tomáš Mlčoch
6
似乎不再需要在路径前传递选项:cmake .. -G <任何内容> -DOPTION=ON 可用于 CMake 3.16.2,对我而言可以正常工作。 - Alexander Revo
要修复选项以使用新的默认值,而不是在更改默认值之前从原始CMake目录设置中获取的值 - 对我来说,只需删除CMakeCache.txt并再次运行ninja等即可。我不必再次运行cmake。谢谢! - undefined

11

这对我有效:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..

10

另一种选择是进入您的构建文件夹并使用命令ccmake .

这类似于 GUI,但基于终端。显然,这对于安装脚本没有帮助,但至少可以在没有 UI 的情况下运行。

我的一个警告是,当出现警告时,它不会让您生成,如果是这种情况,请退出界面并调用cmake .


2
OP明确要求“无GUI”。 - sancho.s ReinstateMonicaCellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接