我正在尝试通过 .将外部库包含到 cmake 项目ExternalProject_Add
中。为了尝试这个功能,我创建了一个最小的工作示例,其中涉及将 pugixml 添加到项目中ExternalProject_Add
。但是,我在寻找从外部项目的本地安装(即 pugixml 的头文件)到项目的包含路径中添加库的头文件的方法时遇到问题。
最小工作示例的项目树组织如下:
.
├── build
├── CMakeLists.txt
└── src
├── CMakeLists.txt
└── main.cpp
在此项目树中,build
指的是构建目录和调用 cmake 生成构建的路径。
内容./CMakeLists.txt
如下:
cmake_minimum_required(VERSION 3.0)
include(ExternalProject)
ExternalProject_Add(pugixml
GIT_REPOSITORY https://github.com/zeux/pugixml.git
INSTALL_DIR ${PROJECT_BINARY_DIR}/extern_install/pugixml
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
)
add_subdirectory(src)
在上面的示例中,我将 pugixml 添加为外部项目,该项目将安装在项目的二进制目录中,其文件将由存储在./src
. 因此,内容为./src/CMakeLists.txt
:
project(foo)
add_executable(foo main.cpp)
target_link_libraries(foo ${pugixml_LIBRARIES})
include_directories(${pugixml_INCLUDE_DIR}) # this part doesn't work
这正是我遇到问题的部分。我假设一旦添加并安装了外部项目,ExternalProject_Add
就会定义一些方便的库来帮助引用库文件和包含目录。但是,这是行不通的。有谁知道使用ExternalProject_Add
包含外部库的正确方法是什么?