我很难从本机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正确地生成一个包含所需的.lib和.h文件的.nupkg文件。但是,当我尝试在C++/WinRT项目中使用生成的包时,我不能#include打包的头文件。
因此,我有以下问题:
发布于 2022-06-01 08:13:52
不确定问题是否仍然存在,但对我来说,它适用于CPack nuget生成器。
在我的库中,我正在为安装做以下操作。我将内嵌头标记为公共的。
target_include_directories(${LIBRARY_NAME}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>
$<INSTALL_INTERFACE:include/>)
set_target_properties(${LIBRARY_NAME}
PROPERTIES PUBLIC_HEADER
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/>)用于安装
install(
TARGETS ${LIBRARY_NAME}
ARCHIVE DESTINATION "lib"
LIBRARY DESTINATION "bin"
RUNTIME DESTINATION "bin"
PUBLIC_HEADER DESTINATION "include")在安装nuget包之后,头可以包含在另一个C++/CLI项目中。
https://stackoverflow.com/questions/63175277
复制相似问题