zoukankan      html  css  js  c++  java
  • 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_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: 查找指定目录下的所有源文件,然后将结果存进指定变量名.

    多个目录,多个源文件

      

    • 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案例

      

    • ./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})
  • 相关阅读:
    dex文件格式三
    神庙逃亡破解分析
    MySQL优化
    Redis AOF和RDB
    KD树
    关系型和非关系型数据库
    数据库实现分布式锁
    单点登录
    数据库树形结构查询
    层次遍历递归和非递归方法
  • 原文地址:https://www.cnblogs.com/zhanghu52030/p/9145103.html
Copyright © 2011-2022 走看看