如何使用cmake编译依赖项?
How to compile dependencies using cmake?
鉴于我有以下文件结构,
my_project
CMakeLists.txt
/include
...headers
/src
...source files
/vendor
/third-party-project1
CMakeLists.txt
/third-party-project2
CMakeLists.txt
如何根据我自己的 CMake 文件中的 CMakeLists.txt 文件编译第三方项目来使用它们?我特别需要他们的包含目录,可能还有他们拥有的任何库。
此外,我如何使用FIND_PACKAGE来测试系统中是否安装了第三方项目,如果他们不编译并link针对包含的项目?
要查找项目,您可以使用 find_package()
命令。希望你的第三方项目提供相应的finder模块,否则你应该自己写。然后,您可以在 CMakeLists.txt
中分析 find_package()
的结果,并有条件地使用 add_subdirectory()
深入研究 third-party-projectN/
—— 这将构建该库作为您的包的一部分。要使用他们的 headers 只需添加(有条件地)include_directories(${PROJECT_SOURCE_DIR}/third-party-projectN/include)
。他们的图书馆将可以从您的 CMakeLists.txt
作为 "ordinal" 目标访问。
如果您的系统中已经安装了该软件包,查找器模块应该为您提供一些变量以用于 include_directories()
and/or target_link_libraries()
.
鉴于我有以下文件结构,
my_project
CMakeLists.txt
/include
...headers
/src
...source files
/vendor
/third-party-project1
CMakeLists.txt
/third-party-project2
CMakeLists.txt
如何根据我自己的 CMake 文件中的 CMakeLists.txt 文件编译第三方项目来使用它们?我特别需要他们的包含目录,可能还有他们拥有的任何库。
此外,我如何使用FIND_PACKAGE来测试系统中是否安装了第三方项目,如果他们不编译并link针对包含的项目?
要查找项目,您可以使用 find_package()
命令。希望你的第三方项目提供相应的finder模块,否则你应该自己写。然后,您可以在 CMakeLists.txt
中分析 find_package()
的结果,并有条件地使用 add_subdirectory()
深入研究 third-party-projectN/
—— 这将构建该库作为您的包的一部分。要使用他们的 headers 只需添加(有条件地)include_directories(${PROJECT_SOURCE_DIR}/third-party-projectN/include)
。他们的图书馆将可以从您的 CMakeLists.txt
作为 "ordinal" 目标访问。
如果您的系统中已经安装了该软件包,查找器模块应该为您提供一些变量以用于 include_directories()
and/or target_link_libraries()
.