• CMakeLists 的使用,大型工程使用cmake 的构件过程


     

    CMakeLists 的使用,大型工程使用cmake 的构件过程

    CMakeLists_1

     PROJECT(hello_2)
    cmake_minimum_required(VERSION 2.8)   #cmake的最低版本
    
     FILE(GLOB SOURCE_1 "${CMAKE_SOURCE_DIR}/main/*.cpp") #下面2句告诉CMake,源文件在哪里?main.cpp
     FILE(GLOB SOURCE_2 "${CMAKE_SOURCE_DIR}/hello/*.cpp")#程序必须链接到hello.cpp里面的SayHello
     
     INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/include/")#告诉CMake头文件在哪里?
     
     ADD_EXECUTABLE(hello_2 ${SOURCE_1} ${SOURCE_2}) #生成可执行文件

    CMakeLists_2

    • cmake中

    PROJECT(hello)
    cmake_minimum_required(VERSION 2.8)
    SET(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}/../")   #工程的根目录,即test
    SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/") #可执行文件生成后存放的目录(CMAKE_SOURCE_DIR是cmake目录)
    SET(LIBRARY_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/lib/") #静态库生成后存放的目录
    
    INCLUDE_DIRECTORIES("${PROJECT_ROOT_PATH}/include/") #告诉CMake头文件在哪里?
    LINK_DIRECTORIES("${CMAKE_SOURCE_DIR}/lib/")#告诉CMake静态库在哪里?
    
    ADD_SUBDIRECTORY(src) #多目录,把src目录加进来,src里面才是真正编译main和hello的
      •  src中
      • ADD_SUBDIRECTORY(main)
        ADD_SUBDIRECTORY(hello)
        • hello中
        • FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/hello/hello.cpp")  #告诉CMake,源文件在哪里?
          ADD_LIBRARY(hello STATIC ${SOURCE_1}) #打包成hello静态库 *.a---如果想生成动态库*.so,将STATIC变为SHARED
        • main中
        • FILE(GLOB SOURCE_1 "${PROJECT_ROOT_PATH}/main/main.cpp")
          ADD_EXECUTABLE(main ${SOURCE_1})  #生成可执行文件
          TARGET_LINK_LIBRARIES(main hello) #并在可执行文件上连接到这个库
  • 相关阅读:
    Linux命令-文件管理(四)
    Linux命令-文件管理(三)
    Linux命令-文件管理(二)
    Linux命令-文件管理(一)
    Nodejs环境搭建
    Python csv文件操作
    python数组定义
    python3+Opencv 搭建环境和基本操作
    Python String startswith() Method
    Upload a file with $.ajax to AWS S3 with a pre-signed url
  • 原文地址:https://www.cnblogs.com/Jessica-jie/p/9324248.html
Copyright © 2020-2023  润新知