Почему CMake устанавливает сторонние заголовки вместе с моим исполняемым файлом?C++

Программы на C++. Форум разработчиков
Anonymous
Почему CMake устанавливает сторонние заголовки вместе с моим исполняемым файлом?

Сообщение Anonymous »

Я использую CMake FetchContent_MakeAvailable для создания ряда сторонних зависимостей из github, например в файле PDFHummus.cmake

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

if(NOT PDFHummus_POPULATED)

Include(FetchContent)
FetchContent_Declare(
PDFHummus
GIT_REPOSITORY ${REPO}
GIT_TAG v4.6.8
DOWNLOAD_EXTRACT_TIMESTAMP FALSE
FIND_PACKAGE_ARGS
)
FetchContent_MakeAvailable(PDFHummus)

endif()
Позже я использую это через:

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

add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES})

target_include_directories(${PROJECT_NAME} PRIVATE include)
target_link_libraries(${PROJECT_NAME} PRIVATE PDFHummus::PDFWriter)
link_current_target_statically(${PROJECT_NAME})

install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin)
Когда я собираю с помощью cmake --build --preset Debug-Windows --target=Install мой исполняемый файл правильно копируется в install/windows/bin каталог, НО все файлы заголовков и файлы CMake для PDFHummus также копируются в каталог install/windows. Это также произошло с другими сторонними библиотеками, которые я создаю.
Я предполагаю, что цели install() из сторонних библиотек вызывают проблему и добавляют дополнительные цели установки в файл build/ windows/install_manifest.txt.
Как я могу предотвратить это, чтобы копировались только те цели, которые я специально называю?
Я используя CMake 3.30.5 с MSVC и генератор MSbuild с помощью следующей команды сборки:

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

make --build --preset Debug-Windows --target=install


Подробнее здесь: https://stackoverflow.com/questions/793 ... executable

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