一、基本介紹
CMake是一個基於配置文件的項目生成系統。它可以用簡單的語句來描述所有平台的編譯過程。CMake支持多個編譯器,包括GCC、Clang、MSVC等。其中,add_executable是CMake中的一個重要命令,用於生成可執行文件。
下面是一個add_executable的基本用法示例:
add_executable(hello main.cpp)
這個命令的第一個參數是生成的可執行文件名,第二個參數是編譯的源代碼文件名,也可以是多個源代碼文件名,例如:
add_executable(hello main.cpp hello.cpp)
二、高級用法
在實際的項目中,可能需要使用到更多的參數和選項,以實現更多的功能和定製化需求。
1. 生成動態庫
除了生成可執行文件之外,add_executable還可以用來生成動態庫。只需要在命令中指定SHARED選項即可,例如:
add_executable(hello SHARED main.cpp)
2. 鏈接靜態庫或動態庫
在實際的編譯中,我們可能需要鏈接其他的靜態庫或動態庫。add_executable同樣支持這個選項。只需要在命令中指定需要鏈接的庫的名稱即可,例如:
add_executable(hello main.cpp)
target_link_libraries(hello myLib)
這裡的myLib是需要鏈接的庫的名稱。
3. 定義編譯選項
在編譯時,我們可能需要針對不同的平台或環境,使用不同的編譯選項和參數。在CMake中,我們可以使用set命令定義編譯選項,然後在add_executable命令中使用即可,例如:
set(CMAKE_CXX_FLAGS "-std=c++11")
add_executable(hello main.cpp)
這裡的CMAKE_CXX_FLAGS指定了編譯參數,-std=c++11表示使用C++11標準進行編譯。
4. 定義宏
在編譯時,我們可能需要定義一些宏,以控制程序的行為和特性。在CMake中,我們可以使用add_definitions命令定義宏,例如:
add_definitions(-DDEBUG)
add_executable(hello main.cpp)
這裡的-DDEBUG表示定義了一個名為DEBUG的宏。
三、CMake與多文件編譯
在實際的開發中,我們往往需要使用多個源文件來組織我們的程序代碼。在CMake中,我們可以使用aux_source_directory命令自動掃描指定目錄下的所有源文件,並生成對應的可執行文件。例如:
aux_source_directory(. SRC_LIST)
add_executable(hello ${SRC_LIST})
這裡的.表示當前目錄,SRC_LIST是一個由自動掃描的源文件組成的列表。
四、總結
add_executable是CMake中的一個重要命令,可以用於生成可執行文件和動態庫。在使用時,我們可以使用一系列的選項和參數來實現更多的定製化需求和功能。在實際開發中,結合多文件編譯,能夠更好地組織和管理代碼。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238621.html