鉴于我有以下文件结构,
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来测试系统中是否安装了第三方项目,以及他们是否编译并链接到包含的项目?
答案 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()
的变量。