Cmake экспортирует статическую библиотеку и скрывает сторонние библиотеки [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Cmake экспортирует статическую библиотеку и скрывает сторонние библиотеки [дубликат]

Сообщение Anonymous »

Я создаю статическую библиотеку, назовем ее X. Эта библиотека использует библиотеку RapidJSON в файлах .cpp. Когда я экспортирую это как статическую библиотеку, я хочу скрыть зависимость RapidJSON. Другой проект должен иметь возможность ссылаться на

Код: Выделить всё

target_link_librares(another_project PUBLIC X)
Моя конфигурация CMake:

Код: Выделить всё

add_library(X STATIC
hub.cpp
)

target_include_directories(X PUBLIC
$
$
)

get_target_property(X_INCLUDE_DIRS X INTERFACE_INCLUDE_DIRECTORIES)

target_link_libraries(X
PUBLIC
Y // this can be visible
PRIVATE
rapidjson // this should not required when another project links to X
)

install(TARGETS X
EXPORT X-targets
ARCHIVE DESTINATION lib
)

install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/
DESTINATION include/X
FILES_MATCHING PATTERN "*.h"
)

install(EXPORT X-targets
FILE X-config.cmake
NAMESPACE X::
DESTINATION lib/X
)
Когда я устанавливаю это и связываюсь с X, требуется строка. Однако этот RapidJSON
используется только в файлах C++. И я хочу скрыть это от конечного пользователя.

Код: Выделить всё

find_package(RapidJson REQUIRED)
Можно ли статически объединить эти функции RapidJSON в статическую библиотеку X?


Подробнее здесь: https://stackoverflow.com/questions/792 ... party-libs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»