Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CPack:存档中缺少接口包含目录_C++_Cmake_Cpack - Fatal编程技术网

C++ CPack:存档中缺少接口包含目录

C++ CPack:存档中缺少接口包含目录,c++,cmake,cpack,C++,Cmake,Cpack,我正在使用CMake 3.10.1,并试图使用CPack为库生成存档,但我无法让它将接口include目录添加到存档中 库和生成的导出文件按预期添加,但是包含目录(使用target\u include\u目录(…PUBLIC…添加)完全丢失 CMakeLists.txt: cmake_minimum_required(VERSION 3.5) project(Test VERSION 1.0.0 LANGUAGES CXX) add_library(${PROJECT_NAME} SHARE

我正在使用CMake 3.10.1,并试图使用CPack为库生成存档,但我无法让它将接口include目录添加到存档中

库和生成的导出文件按预期添加,但是包含目录(使用
target\u include\u目录(…PUBLIC…
添加)完全丢失

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)

project(Test VERSION 1.0.0 LANGUAGES CXX)

add_library(${PROJECT_NAME} SHARED foo.cpp) #add sources and executable

target_include_directories(${PROJECT_NAME} PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inc>  
    $<INSTALL_INTERFACE:inc>
)

install(TARGETS ${PROJECT_NAME}
    EXPORT ${PROJECT_NAME}
    INCLUDES DESTINATION inc
    PUBLIC_HEADER DESTINATION inc
    LIBRARY DESTINATION lib
)
install(EXPORT ${PROJECT_NAME} DESTINATION .)

include(CPack)
cpack-G tgz生成的tgz的内容。

├── lib
│   └── libTest.so
├── Test.cmake
└── Test-noconfig.cmake

知道为什么它会缺少
inc
目录吗?

target\u include\u directories()中使用的类似生成器的表达式
$
命令本身不会安装相应的目录。您需要手动安装此目录(使用
install(FILES)
install(directory)


表达式
$
指定配置文件中目标的接口包含目录,该目录导出安装树(请参见
install(EXPORT)
命令)

Expression
$
指定的接口包括项目本身和导出生成树的配置文件中目标的目录(请参见
EXPORT()
命令)


但这些表达式并不强制在安装时将
$
目录复制到
$
目录中。相反,这些目录的内容通常不同:除了安装到
$
目录中供外部使用的头文件外,目录
$
可能包含供项目内部使用的头文件,这些头文件是not已安装。

虽然生成器表达式在本例中不相关,但我的印象是,
PUBLIC\u标题
INCLUDES
属性可用于安装
接口中设置的目录\u INCLUDE\u目录
。在对文档进行更详细的审查后,我发现情况并非如此谢谢你的提示!
├── lib
│   └── libTest.so
├── Test.cmake
└── Test-noconfig.cmake