Нативная библиотека CPack NuGet

Я изо всех сил пытаюсь создать пакет 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, чтобы он сгенерировал его?

person loics2    schedule 30.07.2020    source источник
comment
Вы когда-нибудь находили ответы на свои вопросы?   -  person Kevin    schedule 16.06.2021
comment
К сожалению, нет, я думаю, что этот генератор CPack работает неправильно (по крайней мере, когда я пытался). Мне удалось создать пакет вручную, используя конфигурацию, которую я нашел здесь, здесь и здесь   -  person loics2    schedule 16.06.2021