Я пытаюсь переместить свой проект на CMake и в то же время оптимизировать процесс компиляции.
Здесь сделка:
- У меня есть несколько поддиров, которые (должны быть) скомпилированы в статическую библиотеку (это работает).
- Я хочу собрать все объектные файлы из каждого поддира в другую большую, старую библиотеку.
Он выглядит следующим образом:
.
libBig.a # made from object from subdir1 and subdir2
subdir1/
src/
libSubdir1.a
subdir2/
src/
libSubdir2.a
Сегодня мне удалось использовать глобальную переменную, в которой каждый subdir CMakeLists.txt будет добавлять свои собственные исходные файлы. Я использую эту переменную как "исходный" вход в моей большой библиотеке:
# the big library depends on all the source files
# ${all_src} is automatically filled with each subdir cpp file
get_property( BigLib_src GLOBAL PROPERTY all_src)
add_library( Big STATIC ${BigLib_src}) # recompiles all the sources
Теперь это работает, не так уж плохо, но дело в том, все мои исходные файлы скомпилированы дважды: один раз для библиотеки subdir и один раз для большой библиотеки.
CMake, похоже, забывает, что он уже их создал.
Мне нужно сохранить библиотеки subdir и ar
не может объединить две статические библиотеки.
Вы знаете, как это сделать?