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

时间:2013-01-13 21:12:45

标签: c++ linux build cmake openkinect

我正在尝试使用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++ wrapper和{{1我自己的CMake项目?如果我完全重写CMake文件,我想到复制某些不依赖于其他目录的目录。我不能再使用git,但这将是一个快速修复。但是我得到了一些奇怪的错误,例如" stdexcept未在此范围内声明",这没有任何意义,因为它是一个标准的gc ++库。

1 个答案:

答案 0 :(得分:6)

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

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

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

e.g。

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

类似的问题: Override option in CMake subproject

相关问题