Сборка статических и общих библиотек для LLVM libC++ 3.3

Последний LLVM libc++ 3.3 от SVN поставляется с CMakeLists.txt, Я новичок в CMake, но вчера я достаточно учился, чтобы строить libc++ проверка на хосте RHEL 6.4 x86_64.

Кроме того, я смог добавить достаточно CPack связанные команды в сказал CMakeLists.txt генерировать libcxx-3.3.svn-0.el6.x86_64.rpm, Но, скорее всего, из-за того, что CMakeЯ не могу создать статическую и общую библиотеку одновременно.

Да. Я рассмотрел Можно ли заставить CMake создать статическую и совместно используемую версию одной и той же библиотеки?, Но вместо того, чтобы использовать add_library и перечислить все исходные файлы, я хотел бы использовать подход, используемый libc++"s CMakeList.txt - с помощью APPEND,

Я мог бы создать статическую библиотеку, заменив ON в строке 40 ниже с OFF построить статическую библиотеку

40  option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
41 

Или я мог бы оставить все как есть и создать общую библиотеку.

Я также возился со следующими строками, исключая NOT или комментируя строки 232 и 233, например. Но независимо от того, что я пытался, я просто не мог заставить статическую библиотеку собираться вместе с общей библиотекой.

232  if (NOT LIBCXX_ENABLE_SHARED)
233    list(APPEND LIBCXX_CXX_FEATURE_FLAGS -D_LIBCPP_BUILD_STATIC)
234  endif()

Как я могу настроить CMakeList.txt файл, чтобы построить оба одновременно?

1 ответ

Решение

ХОРОШО. Я решил использовать "проверенный и верный" метод использования add_library команда, со всеми *.cpp в списке. Это работает OOTB, поэтому я считаю это решением.

Я перейду к этой проблеме снова, как только у меня будет время, чтобы улучшить свои навыки CMake,

Другие вопросы по тегам