创建文件后启用cmake选项/标志

时间:2017-01-23 14:53:57

标签: c++ c makefile installation cmake

我对cmake知之甚少。我按照github页面上的说明安装了一个包libfreenect2。说明如下 -

克隆存储库。并按照cmake步骤:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install

然而,安装后我发现需要libfreenect2作为依赖项的程序/包需要我使用:

cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON

你可能已经注意到,it要求我使用额外的标志 -DENABLE_CXX11 = ON 我该如何解决这个问题?整个make过程完成后如何设置ENABLE_CXX11 = ON?顺便说一下-D做什么? (这些-DXXX称为选项或标志)

如果你的答案是再次重复整个过程,那么请指导我完成删除正确文件的一步一步的过程。我不想删除其他依赖项。

以下是与cmake有关的其他一些stackoverflow答案 - set cmake option()cmake option to include a directoryWhat does cmake do

解决方案 - 我使用已接受的解决方案来启用标志。即使它适用于我的问题(libfreenect2),如果有人可以提供不涉及重新安装的答案,那将是惊人的。

1 个答案:

答案 0 :(得分:0)

我的热烈建议是用ON选项重复这个过程 首先,你应该删除以前生成的内容 要遵循的命令序列如下:

rm -rf build
rm -rf $HOME/freenect2

只是为了完全确定你从干净的状态开始" 我不认为需要rm -rf $HOME/freenect2,因为新安装会覆盖文件/目录,但不应该受到伤害。
您也可以在其中一条评论中提到的SO帖子中尝试建议 然后从libfreenect2的根目录重复该过程:

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON
make
make install  

或者,如果您完全确定使用该选项libfreenect2构建ENABLE_CXX11=ON 始终,则可以明确地将其设置为ON CMakeLists.txt的{​​{1}},具体更改了行:

libfreenect2

进入

OPTION(ENABLE_CXX11 "Enable C++11 support" OFF)

在最后一种情况下,你只需要做

OPTION(ENABLE_CXX11 "Enable C++11 support" ON)  

当然,按照开头的说明进行了清理。

关于CMake的mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 make make install ,它允许您传递选项。直接来自文档:

-D
     

创建一个cmake缓存条目。

     

首次在空构建树中运行cmake时,它会创建一个   CMakeCache.txt文件并使用可自定义的设置填充它   该项目。此选项可用于指定需要的设置   优先于项目的默认值。该选项可以重复   根据需要增加多个缓存条目。   因此,如果有一些项目默认选项需要更改/覆盖,则可以使用此功能。