Я хотел бы использовать следующую стороннюю библиотеку: https://github.com/Corvusoft/restbed
Я хотел бы создать структуру папок, подобную этой:
- root
- CMakeLists.txt
- src
- third_party
- restbed
- src
- CMakeLists.txt
- CMakeLists.txt
Я нашелчто я должен использовать ExternalProject
модуль CMake для достижения этой цели, но не похоже, что я могу сделать это правильно. По какой-то причине внешний источник lib (restbed) не появляется в моем проекте XCode, когда я генерирую его с использованием корневого CMakeLists.txt. Этот корневой файл CMakeLists.txt входит в CMakeLists.txt папки third_party
. CMakeLists.txt папки third_party
выглядит следующим образом:
include(ExternalProject)
# CMAKE_CURRENT_LIST_DIR -> third_party folder
set(RESTBED_DIR ${CMAKE_CURRENT_LIST_DIR}/restbed)
ExternalProject_Add(restbed
PREFIX ${RESTBED_DIR}
SOURCE_DIR ${RESTBED_DIR}
CMAKE_ARGS -DBUILD_SSL=NO
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
BUILD_COMMAND cmake ..
BINARY_DIR ${RESTBED_DIR}/build
INSTALL_DIR ${RESTBED_DIR}/distribution
INSTALL_COMMAND make install
)
set(RESTBED_INCLUDE_DIR ${RESTBED_DIR}/distribution/include)
set(RESTBED_LIB_DIR ${RESTBED_DIR}/distribution/lib)
add_library(librestbed IMPORTED STATIC)
add_dependencies(librestbed restbed)
После этого я хотел бы использовать target_include_dir
и target_link_libraries
для добавления librestbed
в качестве зависимости от моего корневого проекта. После этого, когда я собираю свой проект XCode, ничего не происходит, внешняя библиотека не будет собрана. Что я делаю неправильно? Я не хотел бы использовать встроенную функциональность CMake git, потому что я хотел бы хранить свои внешние зависимости в виде подмодулей git в третьей третей библиотеке. Я бы предпочел не позволять CMake выяснить, нужно ли повторно загружать данную зависимость. Заранее спасибо!