zoukankan      html  css  js  c++  java
  • CMAKE/CMAKEList.txt 学习

    1、cmake_minimum_required(VERSION 2.8)

    cmake最低版本,如果CMake的当前版本低于指定的版本,它会停止处理工程文件,并报告错误

    2、project(<projectname> [languageName1 languageName2 ...])

    projectname:工程名

    languageName:指定工程可以支持的语言。如project(Hello,C CXX),CXX即是C++

    3、set( CMAKE_CXX_FLAGS "-std=c++11" )

    添加c++11标准支持

    4、find_package(包的名称及最低版本)

    找到后面需要库和头文件的包

    例如find_package(OpenCV 2.4.3 REQUIRED)

    5、include_directories("路径")

    比如:

    include_directories(

          ${PROJECT_SOURCE_DIR}

          ${PROJECT_SOURCE_DIR}/include

          ${EIGEN3_INCLUDE_DIR})

    其中${ }是引用的表示方法

    6、set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

    设置路径(下面生成共享库的路径),即生成的共享库在工程文件夹下的lib文件夹中

    7、add_library(${PROJECT_NAME} SHARED src/cpp文件名 …… )

    创建共享库(把工程内的cpp文件都创建成共享库文件,方便通过头文件来调用)

    这时候只需要cpp,不需要有主函数

    ${PROJECT_NAME}是生成的库名 表示生成的共享库文件就叫做 lib工程名.so  

    也可以专门写cmakelists来编译一个没有主函数的程序来生成共享库,供其它程序使用

    8、target_link_libraries(${PROJECT_NAME} /usr/lib/i386-linux-gnu/libboost_system.so )

    链接库,把刚刚生成的${PROJECT_NAME}库和所需的其它库链接起来

    9、set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

    设置可执行文件生成路径

    10、add_executable(要生成的可执行文件名 从工程目录下写起的主函数文件名)

    可执行文件生成,凡是要编译的源文件都需要列举出来。

    add_executable(hello_world src/hello_world.cpp src/main.cpp)

    11、target_link_libraries(可执行文件名 ${PROJECT_NAME})

    这个添加可执行文件所需的库(一般就是刚刚生成的工程的库),比如我们用到了libm.so(命名规则:lib+name+so),就添加该库的名称"m"

    12、set(<variable> <value> [[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE]

    )

    将一个CMAKE变量设置为给定值

    SET(CMAKE_BUILD_TYPE Release)

    设置编译方式为Release,如果要求有比较高德运行方式,建议选择Release

    如:

    IF(NOT CMAKE_BUILD_TYPE)

            SET(CMAKE_BUILD_TYPE Release)

    13、AUX_SOURCE_DIRECTORY(src DIR_SRCS)

    源文件目录

    14、cmake_policy

    管理CMake的策略设置

    C++创建工程如下:

    $mkdir hellotest

    $cd hellotest

    $mkdir bin #可执行文件存放路径

    $mkdir lib  #生成的.so文件存放路径

    $mkdir include #头文件存放路径

    $mkdir src #源文件存放路径

    $mkdir build #编译文件存放路径

    $touch CMakeLists.txt

    $cd build

    $cmake ..

    $make

    详细一点的版本:https://www.cnblogs.com/52php/p/5681745.html

  • 相关阅读:
    vue-router 滚动行为封装示例
    HTML5 History 模式 后端ngnix配置
    vue-router 嵌套命名视图
    npm 源管理 nrm
    windows系统git使用zip命令报错解决方法
    vue v-html 动态内容样式无效解决方法
    vue 项目打包 本地预览
    Vue 项目环境变量
    Oracle中的统计信息
    宽表和窄表的区别---字段
  • 原文地址:https://www.cnblogs.com/doggod/p/12610098.html
Copyright © 2011-2022 走看看