使用CMake安装某些文件

Chr*_*ris 5 svn cmake

我有一个源目录结构:

projectSource
|---src
|---include
|---CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

并希望安装目录结构

projectInstall
|---bin
|---include
|---lib
Run Code Online (Sandbox Code Playgroud)

我的源目录树全部受版本控制,因此每个源文件夹都包含一个额外的.svn/目录.什么是从安装所有的头文件最简单的方法projectSource/includeprojectInstall/include,而跳过的.svn目录?

我想使用类似的东西:

set( PROJECT_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/include )
include_directories( ${PROJECT_INCLUDE_DIR} )
install(DIRECTORY ${PROJECT_INCLUDE_DIR}/
    DESTINATION "include"
    FILES_MATCHING PATTERN "*.h"
    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
Run Code Online (Sandbox Code Playgroud)

但即使我(试图)只安装匹配的文件*.h,我仍然在拿起.svn/目录和内容.

arr*_*owd 13

您可以EXCLUDE在PATTERN中添加关键字:

install(DIRECTORY ${PROJECT_INCLUDE_DIR}/
    DESTINATION "include"
    FILES_MATCHING
    PATTERN "*.h"
    PATTERN ".svn" EXCLUDE
    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
Run Code Online (Sandbox Code Playgroud)