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