如何使用cmake编译依赖项?

时间:2015-01-27 16:44:28

标签: c++ cmake dependencies build-process

鉴于我有以下文件结构,

my_project
    CMakeLists.txt
    /include
        ...headers
    /src
        ...source files
    /vendor
        /third-party-project1
            CMakeLists.txt
        /third-party-project2
            CMakeLists.txt

如何根据我自己的CMake文件中的CMakeLists.txt文件编译第三方项目?我特别需要他们的包括dirs,以及他们可能拥有的任何lib。

此外,我如何使用FIND_PACKAGE来测试系统中是否安装了第三方项目,以及他们是否编译并链接到包含的项目?

1 个答案:

答案 0 :(得分:1)

要查找项目,您可以使用find_package()命令。希望你的第三方项目提供相应的查找器模块,否则你应该写它。然后,您可以在find_package()中分析CMakeLists.txt的结果并有条件地使用add_subdirectory()深入third-party-projectN/ - 这将构建libs作为您的包的一部分。要使用标题,只需添加(有条件)include_directories(${PROJECT_SOURCE_DIR}/third-party-projectN/include)即可。他们的图书馆可以从CMakeLists.txt作为"序数"目标。

如果您的系统中已经安装了这些软件包,则查找程序模块应该为您提供一些可用于include_directories()和/或target_link_libraries()的变量。