C++ 如何将与ExternalProject_一起安装的库添加到目标包括

C++ 如何将与ExternalProject_一起安装的库添加到目标包括,c++,cmake,external-project,C++,Cmake,External Project,我正试图通过ExternalProject\u Add将外部库包含到cmake项目中。为了尝试此功能,我创建了一个简单的工作示例,其中包括使用ExternalProject\u Add将pugixml添加到项目中。但是,我在寻找将外部项目的本地安装(即pugixml的头文件)中的库头文件添加到项目的include路径时遇到了问题 最小工作示例的项目树组织如下: . ├── build ├── CMakeLists.txt └── src ├── CMakeLists.txt └─

我正试图通过
ExternalProject\u Add
将外部库包含到cmake项目中。为了尝试此功能,我创建了一个简单的工作示例,其中包括使用
ExternalProject\u Add
将pugixml添加到项目中。但是,我在寻找将外部项目的本地安装(即pugixml的头文件)中的库头文件添加到项目的include路径时遇到了问题

最小工作示例的项目树组织如下:

.
├── build
├── CMakeLists.txt
└── src
    ├── CMakeLists.txt
    └── main.cpp
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)
在此项目树中,
build
指的是生成目录和调用cmake生成生成生成的路径

/CMakeLists.txt
的内容如下:

.
├── build
├── CMakeLists.txt
└── src
    ├── CMakeLists.txt
    └── main.cpp
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)

这正是我遇到的问题。我假设,一旦添加并安装了外部项目,
ExternalProject\u Add
就会定义一些方便的库来帮助引用库文件和包含目录。然而,这是行不通的。有人知道使用
ExternalProject\u Add
包含外部库的正确方法吗?

不幸的是,这根本不起作用。外部项目的构建在构建时完成,而不是在CMake配置/生成期间完成。提示是
ExternalProject\u Add函数创建一个自定义目标来驱动外部项目的下载、更新/修补、配置、构建、安装和测试步骤:
()

因此,您必须自己定义所有变量。另请参见:(我实际上会将此标记为链接问题的副本,因为问题是相同的)

顺便说一句:我也不喜欢这样做。这样就不能简单地使用
find_package

使用它的预期方式是“超级构建项目”:定义1个CMakeLists,其中所有依赖项和项目只有
ExternalProject\u Add
s。然后它将使用
查找包

可能重复的