如何在命令行设置CMake option()


93

我创建了一个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命令本身打开?我尝试了以下操作,但不起作用

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

24
..参数前列出您的标志。
箭头


正如对5998186的回答所指出的那样,它是'cmake MyProjectFolder -DMyOption = ON'–
Langley

1
再次执行cmake之前,您是否已删除CMakeCache.txt?
Henry Hu

Answers:


100

删除CMakeCache.txt文件,然后尝试以下操作:

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

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


如何具体指定OFF?我似乎无法关闭CUDA选项。
EBE艾萨克

7
@Ébe-isaac如果要显式关闭选项,请使用-DOPTION=OFF
托马什Mlčoch

看来您不必再在路径前通过选项了:cmake .. -G <whatever> -DOPTION=ON对我而言,使用CMake 3.16.2可以正常工作。
亚历山大·雷沃

8

另一个选择是转到构建文件夹并使用以下命令 ccmake .

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

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


OP特别要求“无GUI”。
sancho.s ReinstateMonicaCellio

2

这对我有用:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.