cmake - add_executable
4. add_executable
使用指定的源文件创建出一个可执行文件
4.1 普通可执行文件
4.1.1 命令形式(普通)
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
[source1] [source2 ...])
添加一个可执行文件目标,此目标:
- 由source列出的文件构建而来
- 名字为name
4.1.2 命令参数(普通)
name
:生成可执行文件的名字,必须在工程内全局唯一WIN32
:有此参数时,WIN32_EXECUTABLE
属性会被置为true
,此时在windows环境下创建的可执行文件将以WinMain
函数代替main
函数作为程序入口,构建而成的可执行文件为GUI应用程序
而不是控制台应用程序
MACOSX_BUNDLE
: 有此参数时,MACOSX_BUNDLE
属性会被置为true
,此时在macOS或者iOS上构建可执行文件目标时,目标会成为一个从Finder启动的GUI可执行程序EXCLUDE_FROM_ALL
:有此参数时,此目标就会被排除在all target列表之外,即在执行默认的make时,不会构造此目标,需要构造此目标的时候,需要手动构建,如:
add_executable(test EXCLUDE_FROM_ALL test.cpp)
// test加了EXCLUDE_FROM_ALL属性,在默认编译的时候,
//不会被编译,如果要编译它,需要手动编译,
//比如make test指定编译名为test
make test
- 可以使用
target_sources()
继续为构建可执行文件目标添加源文件,但是target_sources()
指令必须在add_executable
或add_library
之后调用。
4.1.3 示例程序(普通)
# 设置最低Cmake版本要求
cmake_minimum_required(VERSION 3.5)
# 制定项目名
project(hello_cmake)
# 生成可执行文件
add_executable(hello_cmake main.cpp)
4.2 导入的可执行文件
将工程外部的可执行目标文件导入进来,不会有任何构建可执行目标文件的动作发生
4.2.1 命令形式(导入)
add_executable(<name> IMPORTED [GLOBAL])
4.2.2 命令参数(导入)
name
:导入可执行文件目标的名字IMPORTED
:导入的目标文件需指定IMPORTED
属性,IMPORTED
属性指定后,目标文件的属性IMPORTED
被置为true
,在工程内构建生成的可执行文件的IMPORTED
属性会被置为false
。
4.3 别名可执行文件
为目标文件取一个别名,以便后续继续使用。
4.3.1 命令形式
add_executable(<name> ALIAS <target>)
为目标创建别名之后,可以使用别名读取目标的属性,但不能修改目标属性。