CMake: экспорт сторонних заголовков в каталог

#cmake

#cmake

Вопрос:

Используя CMake, я использую стороннюю библиотеку TinyThread , это простая обертка библиотеки потоков и содержит только 1 исходный файл и 2 файла заголовков.

В моем проекте CMakeList.txt Я добавил следующую строку:

 add_library(TinyThread STATIC ${CMAKE_CURRENT_SOURCE_DIR}/../../third_party/TinyThread/source/tinythread.cpp)
  

А затем добавил зависимость от этой библиотеки в мой исполняемый файл, это отлично работает.

Я пытаюсь выяснить, как скопировать или экспортировать два файла заголовков в общий каталог include, который я использую в своем проекте.

 ${CMAKE_CURRENT_SOURCE_DIR}/../../include
  

Какой рекомендуемый способ сделать это?

Ответ №1:

Если вы просто хотите «использовать» эти заголовочные файлы во время компиляции, вы можете использовать include_directories(), как объясняет Naszta.

В случае, если вы действительно хотите скопировать файлы, вы можете использовать configure_file() или file( КОПИРОВАТЬ … ) (проверьте нижнюю часть раздела команды file()).

Ответ №2:

Я думаю, вам следует сделать что-то вроде этого:

 SET(TINY_THREAD_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH "TinyThread include path")
SET(TINY_THREAD_SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/tinythread.cpp" CACHE FILEPATH "TinyThread source file")
...
INCLUDE_DIRECTORIES(${TINY_THREAD_INCLUDE_PATH})
ADD_LIBRARY(TinyThread STATIC ${TINY_THREAD_SOURCE_FILE})
  

Таким образом, вы могли бы повторно использовать их позже по их имени. Если вы хотите скрыть их в обычном режиме:

 MARK_AS_ADVANCED(TINY_THREAD_INCLUDE_PATH TINY_THREAD_SOURCE_FILE)