Я прочитал документацию по использованию внешних проектов от Kitware Вот и я пытаюсь следовать процессу, чтобы использовать библиотеку обработки изображений 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?
Я провел дальнейшие исследования и решил последовать примеру OpenChemistry Проект, основанный на cmake, поскольку у него были схожие требования, включая несколько внешних проектов.