CMake 案例

單個源文件ui

  

# CMake 最低版本號要求
cmake_minimum_required (VERSION 3.11)

# 項目信息
project (Demo)

# 指定生成目標
add_executable(Demo main.cc)

cmake_minimum_required指定運行此配置文件所需的 CMake 的最低版本;spa

project參數值是 Demo,該命令表示項目的名稱是 Demo。debug

add_executable 將名爲 main.cc 的源文件編譯成一個名稱爲 Demo 的可執行文件server

同一目錄,多個源文件

  

# CMake 最低版本號要求
cmake_minimum_required (VERSION 3.11)

# 項目信息
project (Demo)

# 查找當前目錄下的全部源文件
# 並將名稱保存到 DIR_SRCS 變量
aux_source_directory(. DIR_SRCS)

# 指定生成目標
add_executable(Demo ${DIR_SRCS})
#或者:add_executable(Demo main.cc math_function.cc math_function.h)

 aux_source_directory: 查找指定目錄下的全部源文件,而後將結果存進指定變量名.xml

多個目錄,多個源文件

  

  • Demo目錄下的CMakeLists.txt
# CMake 最低版本號要求
cmake_minimum_required (VERSION 3.11)

# 項目信息
project (Demo)

# 查找當前目錄下的全部源文件
# 並將名稱保存到 DIR_SRCS 變量
aux_source_directory(. DIR_SRCS)

# 添加 math 子目錄
add_subdirectory(math)

# 指定生成目標
add_executable(Demo ${DIR_SRCS})

# 添加連接庫
target_link_libraries(Demo MathFunctions)
  • math目錄下的CMakeLists.txt
# 查找當前目錄下的全部源文件
# 並將名稱保存到 DIR_LIB_SRCS 變量
aux_source_directory(. DIR_LIB_SRCS)

# 生成連接庫,庫名爲MathFunctions
add_library (MathFunctions ${DIR_LIB_SRCS})

add_subdirectory指明本項目包含一個子目錄 math,這樣math目錄下的文件纔會被處理  blog

target_link_libraries指明可執行文件 main 須要鏈接一個名爲 MathFunctions 的連接庫。get

Notepad案例

  

  • ./Notepad/CMakeLists.txt
cmake_minimum_required(VERSION 3.11)

PROJECT (Notepad)

# Require "qa" and "xml" for debug report.
if(MSVC)
    find_package(wxWidgets REQUIRED COMPONENTS core base qa xml)
else()
    # Require "net" for create server/client between two instances.
    find_package(wxWidgets REQUIRED COMPONENTS core base net qa xml)
endif()

include(${wxWidgets_USE_FILE})

set(Boost_USE_STATIC_LIBS ON)

find_package(Boost)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
endif()

include_directories(${PROJECT_SOURCE_DIR}/src)

add_subdirectory(src)
  • ./Notepad/src/CMakeLists.txt
add_subdirectory(notepad)
  • ./Notepad/src/notepad/CMakeLists.txt
aux_source_directory(. DIR_SRCS)

set(TARGET_NAME notepad)

add_executable(${TARGET_NAME} WIN32 ${DIR_SRCS})

target_link_libraries(${TARGET_NAME} ${wxWidgets_LIBRARIES})
相關文章
相關標籤/搜索