gpt4 book ai didi

c++ - 如何将现有的 CMake git repo 作为子模块包含在我自己的 CMake 项目中?

转载 作者:IT王子 更新时间:2023-10-29 01:19:49 27 4
gpt4 key购买 nike

我正在尝试使用 OpenKinect 编写一些程序项目。我想将 OpenKinect 的主分支作为子目录添加到我的项目源代码中。但是,如果您查看 OpenKinect 自己的 CMake,那里的东西太多了,我不需要所有东西。那里有某些选项,它们被设置为 ON 或 OFF,如下所示:

OPTION(BUILD_AUDIO "Build audio support" OFF)
OPTION(BUILD_REDIST_PACKAGE "Build libfreenect in a legally-redistributable manner (only affects audio)" OFF)
OPTION(BUILD_EXAMPLES "Build example programs" ON)
OPTION(BUILD_FAKENECT "Build fakenect mock library" ON)
OPTION(BUILD_C_SYNC "Build c synchronous library" ON)
OPTION(BUILD_CPP "Build C++ Library (currently header only)" ON)
OPTION(BUILD_CV "Build OpenCV wrapper" ON)
OPTION(BUILD_AS3_SERVER "Build the Actionscript 3 Server Example" OFF)
OPTION(BUILD_PYTHON "Build Python extension" ON)
IF(PROJECT_OS_LINUX)
OPTION(BUILD_CPACK "Build an RPM or DEB using CPack" ON)
ENDIF(PROJECT_OS_LINUX)

在不对 OpenKinect 文件进行任何重大更改的情况下(以便我可以在需要时随时 git pull),如何只导入某些部分(例如,C++ 包装器OpenCV 绑定(bind))到我自己的 CMake 项目?如果我完全重写 CMake 文件,我想复制某些不依赖于其他目录的目录。我将无法再使用 git,但这将是一个快速修复。但是我以这种方式收到了奇怪的错误,例如“stdexcept 未在此范围内声明”,这是没有意义的,因为它是标准的 gc++ 库。

最佳答案

如果您只是想启用/禁用该库的某些部分,您可以在调用 ADD_SUBDIRECTORY 之前简单地设置适当的选项。

只需使用与库的 CMakeLists.txt 中相同的 OPTION 命令,但根据需要将它们设置为 ON/OFF。当然,您可以随意更改/选择您喜欢的描述字符串。

或者(如果选项的值与 true/false 不同),您可以使用 SET(.... CACHE ... )

例如

SET(BUILD_CPP TRUE CACHE BOOL "Build C++ Library (currently header only)")

类似问题: Override option in CMake subproject

关于c++ - 如何将现有的 CMake git repo 作为子模块包含在我自己的 CMake 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com