我对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 directory,What does cmake do
解决方案 - 我使用已接受的解决方案来启用标志。即使它适用于我的问题(libfreenect2),如果有人可以提供不涉及重新安装的答案,那将是惊人的。
答案 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文件并使用可自定义的设置填充它 该项目。此选项可用于指定需要的设置 优先于项目的默认值。该选项可以重复 根据需要增加多个缓存条目。 因此,如果有一些项目默认选项需要更改/覆盖,则可以使用此功能。