Соберите все файлы заголовков при компиляции статической библиотеки - PullRequest
0 голосов
/ 04 февраля 2019

Я использую Cmake для компиляции статической версии библиотеки из исходного кода.

Исходный код имеет структуру, которая выглядит следующим образом:

src/ 
   module1/
       x.cpp
       x.h
       ... 
   module2/
       y.cpp
       y.h
       ...

и т. Д. *

Компиляция статической версии библиотеки не составляет труда.Однако для целей распространения я просто хочу распространять заголовки (x.h, y.h, ...) и статические библиотеки (module1.a, module2.a, ...).

Есть ли в GCC или CMAKE какая-либо команда для автоматического сбора всех заголовков и помещения их в отдельную папку?

Мне известно, что я мог бы вручную разделить источник и заголовки или просто распределить весь код (источник и заголовки), но это расточительно и нежелательно для моего конкретного случая использования.В качестве альтернативы, я мог бы написать довольно простой скрипт на Python для этого, но мне кажется, что это, вероятно, довольно распространенный сценарий.Так что я думаю, что в Gcc или Cmake есть что-то для этого.

Примечание: я не отвечаю за поддержку кодовой базы, поэтому я не могу сказать, как устроен проект.Если бы я был, я мог бы разделить код на папки src и include.

1 Ответ

0 голосов
/ 04 февраля 2019

Лучше всего сделать так, чтобы cmake glob установил все ваши артефакты.

# append to your existing CMakeLists.txt
install(TARGETS module1 module2 #adjust to use your names
        ARCHIVE DESTINATION lib)
file(GLOB_RECURSE header_list "*.h") #adjust if necessary
install(FILES ${header_list}
        DESTINATION include)

Имейте в виду, что глобализация не идеальна, и список файлов обновляется только при запуске cmake (т.е.он не обнаружит добавленные или удаленные файлы сам по себе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...