Я изо всех сил пытаюсь создать пакет NuGet из собственной библиотеки C++. На данный момент у меня есть следующая установка:
include(GNUInstallDirs)
file(RELATIVE_PATH relDir
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/${relDir})
set(CMAKE_INSTALL_DOCDIR ${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME})
# ...other CMake config...
install(TARGETS MyLib
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mylib
)
set(CPACK_PACKAGE_NAME MyLib)
set(CPACK_PACKAGE_VENDOR Me)
# ...standard CPack variables...
if(WIN32)
set(CPACK_NUGET_PACKAGE_TAGS "Native" "native")
set(CPACK_GENERATOR ZIP;NuGet)
else()
set(CPACK_GENERATOR TGZ)
endif()
include(CPack)
Затем я запускаю cmake --build . --target package
для упаковки моей библиотеки, и CMake правильно генерирует файл .nupkg
, содержащий нужные мне файлы .lib
и .h
. Но затем, когда я пытаюсь использовать сгенерированный пакет в проекте C++/WinRT, я не могу #include
запаковать заголовки.
Итак, у меня есть следующие вопросы:
- в соответствии с этим ответом SO и документация MS, упакованные файлы должны следовать определенной иерархии. Нужно ли менять пути CMake
install()
? - в соответствии с этим ответом SO, причина, по которой я не могу найти свои заголовки, заключается в том, что у меня нет файла
.targets
. Нужно ли мне создавать его самому или есть способ сообщить CPack, чтобы он сгенерировал его?