SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
时间: 2023-06-12 07:05:20 浏览: 148
这行代码是 CMake 中用于设置目标属性的命令,其中 `hello_static` 是一个目标名称。`PROPERTIES` 后面跟着的是要设置的属性列表,包括 `CLEAN_DIRECT_OUTPUT`。`1` 表示将该属性设置为开启状态。`CLEAN_DIRECT_OUTPUT` 属性表示是否将目标文件从构建树中移除。设置为 1 时,构建目标时会将目标文件从构建树中移除,而不是将其移动到指定目录中。这样可以避免在构建多个目标时出现重复文件的问题。
相关问题
set_target_properties的参数
`set_target_properties()`函数用来设置目标的属性,其中常用的参数有:
- `target`:要设置属性的目标名称,可以是一个库、可执行文件或自定义目标。
- `PROPERTIES`:属性列表的开始标记,后面跟着一系列属性和对应的值。
- `PROPERTY`、`ADD_PROPERTY`:用来设置单个属性的函数,可以省略`PROPERTIES`关键字,例如:
```
set_target_properties(myTarget PROPERTIES CXX_STANDARD 11)
set_target_properties(myTarget PROPERTY CXX_STANDARD 11)
set_target_properties(myTarget ADD_PROPERTY CXX_STANDARD 11)
```
除了以上参数,`set_target_properties()`函数还可以接受其它一些参数,例如:
- `VERSION`和`SOVERSION`:设置库的版本号和API版本号。
- `PUBLIC_HEADER`、`PRIVATE_HEADER`和`INTERFACE_HEADER`:设置库的头文件路径。
- `OUTPUT_NAME`:设置生成的目标文件名。
- `ARCHIVE_OUTPUT_DIRECTORY`、`LIBRARY_OUTPUT_DIRECTORY`和`RUNTIME_OUTPUT_DIRECTORY`:设置库文件和可执行文件的输出路径。
- `COMPILE_FLAGS`和`LINK_FLAGS`:设置编译和链接时的额外编译选项。
具体的参数列表和用法可以参考CMake文档。
set_target_properties()完整
`set_target_properties()`是CMake中用来设置目标属性的函数。它的语法如下:
```
set_target_properties(target1 target2 ...
PROPERTIES prop1 value1
prop2 value2
...)
```
其中,`target1`, `target2`等是要设置属性的目标,`prop1`, `prop2`等是要设置的属性名,`value1`, `value2`等是对应属性的值。
下面是一个`set_target_properties()`函数的完整示例:
```
set_target_properties(myTarget PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
VERSION 1.0.0
SOVERSION 1
PUBLIC_HEADER include/myHeader.h
OUTPUT_NAME myLib
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
```
这个示例中,我们设置了一个名为`myTarget`的目标的属性。具体的属性设置如下:
- `CXX_STANDARD`和`CXX_STANDARD_REQUIRED`分别指定了C++标准的版本和是否要求编译器强制使用指定的标准。
- `VERSION`和`SOVERSION`分别指定了库的版本和API版本。
- `PUBLIC_HEADER`指定了库的公共头文件。
- `OUTPUT_NAME`指定了生成的库文件的名称。
- `ARCHIVE_OUTPUT_DIRECTORY`、`LIBRARY_OUTPUT_DIRECTORY`和`RUNTIME_OUTPUT_DIRECTORY`分别指定了静态库、动态库和可执行文件的输出目录。
这些属性的具体含义可以参考CMake文档中的说明。
阅读全文