CMake 案例

单个源文件

  CMake 案例

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

# 项目信息
project (Demo)

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

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

project参数值是 Demo,该命令表示项目的名称是 Demo。

add_executable 将名为 main.cc 的源文件编译成一个名称为 Demo 的可执行文件

同一目录,多个源文件

  CMake 案例

# 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: 查找指定目录下的所有源文件,然后将结果存进指定变量名.

多个目录,多个源文件

  CMake 案例

  • 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目录下的文件才会被处理 

target_link_libraries指明可执行文件 main 需要连接一个名为 MathFunctions 的链接库。

Notepad案例

  CMake 案例

  • ./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})

原文链接: https://www.cnblogs.com/zhanghu52030/p/9145103.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    CMake 案例

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/392142

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月1日 下午3:24
下一篇 2023年4月1日 下午3:24

相关推荐