【发布时间】:2017-06-08 03:07:52
【问题描述】:
我对 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。 我该如何解决这个问题?整个制作过程完成后,如何设置 ENABLE_CXX11=ON? 顺便问一下 -D 是做什么的? (这些 -DXXX 是叫选项还是标志)
如果您的回答是再次重复整个过程,请指导我逐步完成删除正确文件的过程。我不想删除其他依赖项。
以下是与 cmake 相关的其他一些 stackoverflow 答案- set cmake option()、cmake option to include a directory、What does cmake do
解决方案 - 我使用公认的解决方案来启用标志。即使它对我的问题(libfreenect2)有效,如果有人可以提供不涉及重新安装的答案,那将是惊人的。
【问题讨论】:
-
我假设您不想从头开始一切。这很好,因为它应该可以用不同的参数重复你的最后三个步骤。根据我的经验,
make确实会检测到 makefile 何时更改并相应地进行重建。 -
好吧!我总是可以重新开始,但这并不是那么有趣。如果我不能很快得到答案,我会的。我不需要删除在cmake过程中创建的主目录中的“freenect2”文件夹吗?我不需要删除在 cmake 过程中生成的任何其他文件吗?并且执行整个过程(cmake,make和make install)意味着新版本安装在以前的版本之上?
-
我会说,不,您不必删除 CMake 生成的任何内容。这通常仅在您更改与编译器本身相关的内容时才需要。
ENABLE_CXX11听起来像是一个特定于库的选项(您正在使用-D强制/覆盖)。 -
好的!感谢那。但是,即使它是一个特定于库的选项,并且如果我再次进行整个过程并再次安装它,那么我不应该先卸载现有的包吗?这不是必须的吗?
-
是的,事先致电
make uninstall会更干净。如果该构建目标不可用,请参阅here。
标签: c++ c makefile installation cmake