CMake教程13:美化构建后的项目工程结构

444 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

通过一些基础的配置,CMake是可以生成一份对应平台的IDE项目工程的。

不过这个工程结构可能非常的杂乱,所有的东西都是堆在一起的。

将多个Target放到一个工程目录下

set_target_properties用来设置target的属性,语法如下:

set_target_properties(
    target1 target2 ...
    PROPERTIES 
        prop1 value1
        prop2 value2 ...
)

使用FOLDER属性可以将生成的多个target放在一个目录下

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_target_properties(
    cocos2d luacocos2d cocos2dInternal
    PROPERTIES
        FOLDER "cocos"
)

image.png

既然有这是,就有获取,对应的命令为:get_propertyget_target_properties

一些常用的TargetProperty

标题作用
FOLDER将多个target放到一个工程目录下,可以使用/分割设置多级目录
MACOSX_BUNDLE_GUI_IDENTIFIERbundle的名字mac
MACOSX_BUNDLE_BUNDLE_VERSION版本号
MACOSX_BUNDLE在Mac、IOS上构建一个可以运行的应用程序可选值TRUE
WIN32_EXECUTABLE在Windows上构建一个可以运行的应用程序
MACOSX_BUNDLE_SHORT_VERSION_STRING
OUTPUT_NAME目标文件的名字
RUNTIME_OUTPUT_DIRECTORY
ARCHIVE_OUTPUT_DIRECTORY
LIBRARY_OUTPUT_DIRECTORY
VS_USER_PROPS

对项目工程文件组进行重命名

将包含src的源码工程目录命名为src

# 语法:source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
source_group("src" FILES ${src})

工程目录结构按照文件夹目录结构组织

# 语法:source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
# TREE是在3.8支持的
source_group(TREE ./ FILES ${src}

在上边的例子里面,项目工程中的文件结构会以源文件目录的结构进行组织。

${src}里面的所有文件必须是<root>子目录文件,否则会报错:

source_group ROOT is not a prefix of file