c++ - CMake:使用外部项目安装的标题

标签 c++ cmake leptonica

我已经阅读了有关使用Kitwarehere中的外部项目的文档,并尝试按照此过程将图像处理库Leptonica用作外部依赖项。我经常使用不同的工具链交叉编译,因此不希望全局安装Leptonica,而是希望将库和头文件安装在构建目录中,以便在编译工具链更改时可以删除并重新安装它们。
换句话说,我想让cmakeprojecta依赖于externalprojectb的已安装头和库。这是我目前的CMakeLists.txt文件。

cmake_minimum_required(VERSION 3.2)
project(CmakeProjectA)
set(SOURCE_FILES main.cpp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

include(ExternalProject)
ExternalProject_Add(
    leptonica-1.72
    PREFIX leptonica
    URL http://www.leptonica.com/source/leptonica-1.72.tar.gz
    URL_MD5 7581db29f8442197ce68e766c6047c4b
    CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR>
)
ExternalProject_Get_Property(
    leptonica-1.72
    INSTALL_DIR
)
set(LEPTONICA_INCLUDE_DIR ${INSTALL_DIR} CACHE string "Location of leptonica header files")

include_directories(${LEPTONICA_INCLUDE_DIR})

add_executable(my_executable ${SOURCE_FILES})
add_dependencies(my_executable leptonica-1.72)
target_link_libraries(my_executable leptonica-1.72)

当我查看LEPTONICA_INCLUDE_DIR的缓存值时,该值是
/Users/me/Library/Caches/clion10/cmake/generated/509e0c9e/509e0c9e/__default__/install`.  

然而,cmakeprojecta的构建目的是:
/Users/me/Library/Caches/clion10/cmake/generated/509e0c9e/509e0c9e/Debug

因此,我认为前者路径中的默认值不允许主项目找到Leptonica的头文件如何使我的项目了解项目的不同构建变体(调试和发布),以便CmakeProjectA可以使用Leptonica提供的头文件和库?

最佳答案

我做了进一步的研究,决定以基于cmake的项目为例,因为它在包含多个外部项目方面有类似的需求。

关于c++ - CMake:使用外部项目安装的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31070044/

相关文章:

c++ - MAD(乘、加、除)散列函数如何工作?

c++ - 在 Visual C++ 中测量操作速度的最佳方法

c++ - 是否可以从其他线程隐藏 qt 小部件窗口?

c++ - 使用 Floyd 算法找到最短路径

c++ - CMake 如何设置 src 根目录以便始终从根目录而不是相对路径查找头文件?

cmake:在目标上安装 header 顺序和依赖项

cmake - 支持一个项目多个cmake最低版本

c++ - x64 上的 visual studio 2015 和 tesseract 3.05

ios - OCR:图像到文本?

java - 想要将 org.bytedeco.javacpp.lept.PIX 转换为 byte[] 和缓冲图像