Как собрать библиотеку напрямую из объектных файлов с помощью CMake

Учитывая набор объектных файлов, как бы вы создали статическую библиотеку с помощью CMake?

С автоинструментами я бы сделал

libXXX.a: $(OBJFILES)
    $(AR) cru $@ $(OBJFILES)
    $(RANLIB) $@

OBJFILES — список объектных файлов.

Как это сделать в CMake?

РЕДАКТИРОВАТЬ: я не могу перекомпилировать исходные файлы cxx, мне нужно использовать объектные файлы (*.o) для создания библиотеки.


person Barth    schedule 17.01.2012    source источник


Ответы (2)


Добавьте пользовательскую команду, например :

add_custom_command(OUTPUT libXXX.a COMMAND ${AR} cru ${OBJFILES} ).

При необходимости вы можете использовать add_custom_target и add_dependencies, чтобы добавить libXXX.a для конкретной цели или, возможно, для настройки зависимостей.

person André    schedule 18.01.2012

Используйте add_library в CMakeLists.txt:

add_library(XXX STATIC foo.c bar.cc baz.cxx)
person Jack Kelly    schedule 18.01.2012
comment
Спасибо за ваш ответ. Однако дело в том, что у меня есть объектные файлы, и я не могу перекомпилировать файлы cxx. Таким образом, я просто хочу использовать существующие объектные файлы для создания библиотеки. - person Barth; 18.01.2012