gpt4 book ai didi

c++ - include_directories 无法正常工作

转载 作者:太空狗 更新时间:2023-10-29 20:24:15 25 4
gpt4 key购买 nike

我正在尝试像 this example 中那样设置我的库和项目使用 ExternalProject_Add。

我有一个这样的图书馆:

lib
|-include
| |-a.hpp
|-src
| |-a.cpp
|-CMakeLists.txt

使用以下 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.0)
project(testlib)
file(GLOB_RECURSE SRCS src/*.cpp; src/*.c)
add_library(TestLib STATIC ${SRCS})
install(TARGETS TestLib DESTINATION ${PROJECT_SOURCE_DIR}/lib)

我的项目是这样的:

app
|-src
| |-main.cpp
|-CMakeLists.txt

使用以下 CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.11)
project(testapp)
file(GLOB_RECURSE SRCS src/*.cpp; src/*.c)
file(GLOB_RECURSE HDRS src/*.hpp; src/*.h)
include(ExternalProject)
ExternalProject_Add(
TestLib
PREFIX "contrib"
DOWNLOAD_DIR "contrib"
SOURCE_DIR "${PROJECT_SOURCE_DIR}/contrib/TestLib"
URL "../../lib.zip"
)

add_library(monoengine STATIC IMPORTED)
set_property(TARGET monoengine PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/contrib/TestLib/lib/libTestLib.a)
add_dependencies(monoengine TestLib)

add_executable(TestApp ${SRCS} ${HDRS})

include_directories(${PROJECT_SOURCE_DIR}/contrib/TestLib/include/)
target_link_libraries(TestApp monoengine)

库安装正确,我在 contrib/TestLib/lib 中有 .a 文件和 contrib/TestLib/include 中的 .hpp 文件

但是在我的 main.cpp 中,我不能将 a.hpp 包含在 <TestLib/a.hpp> 中, 它只适用于 "../contrib/TestLib/include/a.hpp"<a.hpp> .

如何将它包含在 <TestLib/a.hpp> 中? ?

最佳答案

您可以将包含目录添加到 INTERFACE_INCLUDE_DIRECTORIES 的集合中导入的目标。这样,当使用 target_link_libraries 添加依赖项时,您也会自动获取依赖项的包含目录。请注意,此功能需要 CMake 2.8.12 或更新版本。

add_library(monoengine STATIC IMPORTED)
set_property(TARGET monoengine PROPERTY IMPORTED_LOCATION
${PROJECT_SOURCE_DIR}/contrib/TestLib/lib/libTestLib.a)
set_property(TARGET monoengine PROPERTY INTERFACE_INCLUDE_DIRECTORIES
${PROJECT_SOURCE_DIR}/contrib/TestLib/include)

请注意,要使其正常工作,依赖项的源目录结构必须与包含目录结构匹配(也就是说,如果 #include <TestLib/a.hpp> 不在子目录 a.hpp 中,则不能 TestLib )。如果这是一个问题,您可能需要将安装步骤添加到您的 ExternalProject_Add从安装目标目录而不是源目录调用和包含。

关于c++ - include_directories 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com