CMake命令之項目命令


project

## 設置項目的名稱,版本和允許的語言

project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])
project(<PROJECT-NAME>
        [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
        [DESCRIPTION <project-description-string>]
        [LANGUAGES <language-name>...])

add_executable

## 添加一個可執行target.
## <name> target的名稱,在項目中全局唯一
##   使用RUNTIME_OUTPUT_DIRECTORY屬性,可改變生成target的默認位置
##   使用OUTPUT_NAME屬性,可改變生成target的默認名稱
## WIN32 設置target的WIN32_EXECUTABLE屬性
## MACOSX_BUNDLE 設置target的MACOSX_BUNDLE屬性
## EXCLUDE_ROM_ALL add_executable(
<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
## 添加一個導入target,它引用了項目外的一個可執行文件
add_executable(<name> IMPORTED [GLOBAL])
## 添加一個可執行target的別名
add_executable(<name> ALIAS <target>)

add_library

## 添加一個library target
## <name> 指定target的名字,在項目中全局唯一
## STATIC 靜態庫
## SHARED 動態庫
## MODULE "插件庫" (Windows resource DLL,托管C++/CLI DLL)
## 怎樣添加MACOSX Framework? - 通過設置SHARED/STATIC庫target的FRAMEWORK屬性。 

add_library(
<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...]
## 添加一個導入的library target,它引用了項目之外的某個庫。
## 不會產生build這個目標的代碼。
add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED
            [GLOBAL])
## 添加一個Object Library,它用於將源文件編譯。
add_library(<name> OBJECT <src>...)

## add_library()和add_executable()可以通過$<TARGET_OBJECTS:name>的方式引用Object Library,作為一個源。
## 例:
add_library(... $<TARGET_OBJECTS:objlib> ...)
add_executable(... $<TARGET_OBJECTS:objlib> ...)
## Alias Libraries 定義別名
add_library(<name> ALIAS <target>)
## Interface Libraries 我不知道
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])

add_dependencies

## 添加頂級target對其他頂級target的依賴。
add_dependencies(<target> [<target-dependency>]...)

頂級target是指用以下命令創建的:add_executable(),add_library(),add_custom_target()。

add_subdirectory

## Add a subdirectory to the build.
## source_dir 指定子目錄,子目錄中須包含CMakeLists.txt文件和代碼文件。
## binary_dir 指定存放輸出文件的目錄 add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

add_complie_options

## 添加編譯選項
add_compile_options(<option> ...)

添加編譯選項到編譯器的命令行。

作用范圍:當前目錄下的targets和在此命令之后調用的子目錄targets。

添加預處理定義可用它們替代:target_compile_definitions(),add_definitions()

添加包含目錄可用它們替代:target_include_directories(),include_directories()

add_definitions

## 編譯時添加_D定義項
add_definitions(-DFOO -DBAR ...)

這個命令可用於添加任意標志,但它是為添加預處理定義而設置的。

target_complie_definitions

## 指定編譯target時用到的定義。

target_compile_definitions(<target>
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

 

include_directories

## 添加文件包含目錄
## 目錄添加到當前CMakeLists文件的INCLUDE_DIRECTORIES屬性中,
## 也添加到當前CMakeLists文件所有target的INCLUDE_DIRECTORIES屬性中
## AFTER|BEFORE 指定包含目錄附加到前部還是尾部
## SYSTEM 指示包含目錄是否是系統包含目錄
include_directories([AFTER
|BEFORE] [SYSTEM] dir1 [dir2 ...])

target_include_directories

## 添加包含目錄到一個target
## BEFORE 目錄附加到前部
## 
target_include_directories(<target> [SYSTEM] [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

 

 

add_custom_target

## 添加一個執行指定命令的target.
## ALL 指明這個target會被放入缺省構建目標,然后它每次都會被運行
## COMMAND 設定在構建時會運行的命令 add_custom_target(Name [ALL] [command1 [args1...]] [COMMAND command2 [args2...] ...] [DEPENDS depend depend depend ... ] [BYPRODUCTS [files...]] [WORKING_DIRECTORY
dir] [COMMENT comment] [VERBATIM] [USES_TERMINAL] [COMMAND_EXPAND_LISTS] [SOURCES src1 [src2...]])

add_custom_command

aux_source_directory

## 查找目錄下源文件
## dir 要查找的目錄
## variable 結果存入變量,各文件名以";"分隔。
aux_source_directory(<dir> <variable>)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM