zoukankan      html  css  js  c++  java
  • cmake使用笔记,一些常用的命令

    我的工程目录如下:

    │  CMakeLists.txt  
    ├─cmake_tutorial
    │      CMakeLists.txt
    │      cmake_tutorial.cpp
    │      cmake_tutorial.h
    │      
    └─src
        │  main.cc
        │  
        ├─bundle_sort
        │      bundle_sort.cc
        │      bundle_sort.h
        │      CMakeLists.txt
        │      
        └─common
                CMakeLists.txt
                declarations.h
                tools.cc
                tools.h
                utils.cc
    

    顶层的CMakeList解释如下:

    # CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
    # 并包含子项目。
    #
    
    set(CMAKE_CXX_FLAGS   "-std=c++11")             # c++11
    cmake_minimum_required (VERSION 3.8)
    
    project ("cmake_tutorial")
    
    #下面是编译选项,debug和Release模式的判断,需要注意的是关键字OR必须要大写
    IF (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "DEBUG")
        SET(COMPILE_FLAGS "-w -O0 -g3")
        message("Debug mode")
    ELSE()
        SET(COMPILE_FLAGS "-w -O3 -g")
        message("Release mode")
    ENDIF()
    
    
    # 把src里面的内容加入到SRC_DIR变量里面,注意,这个是从左到右的
    aux_source_directory("./src" SRC_DIR)
    
    # 执行shell命令,并把输出存到OUTPUT_VARIABLE指定的变量中
    #execute_process(
    #        COMMAND bash -c "mysql_config --libs_r"
    #        OUTPUT_VARIABLE mysql_config_output
    #)
    
    # 如果增加多个源文件,那么这样写即可,自动会进行追加
    #aux_source_directory("./src/common" SRC_DIR)
    
    # .h文件的位置,相当于gcc编译里面的-I选项
    #include_directories("./src" "./src/main")
    
    # 需要链接的库文件目录,这里是目录,类似于LD_LIBRARY_PATH的作用,eg:LINK_DIRECTORIES("/opt/MATLAB/R2012a/bin/glnxa64")
    #link_directories()
    
    # 需要链接的库文件路径,注意,这里是全路径. eg: LINK_LIBRARIES("/opt/MATLAB/R2012a/bin/glnxa64/libeng.so")
    # 注意和target_link_libraries的区别
    #link_libraries()
    
    
    # 包含子项目,子项目里面可能包含CMakeLists.txt文件,处理新的cmake
    add_subdirectory("./src/bundle_sort")
    add_subdirectory("./src/common")
    
    # 相当于生成最后的一个可运行文件
    add_executable(Cmake ${SRC_DIR})
    
    # 增加编译选项
    #add_definitions("-Wall -ansi")
    
    # 专门用来打印消息的命令
    #message("hello world. This is a print message!")
    
    # 链接静态库
    target_link_libraries(Cmake bundle_sort common)
    # 连接静态库也可按照下面的方式书写
    #target_link_libraries(tpcc_start -lrt -L/usr/local/mysql/lib -lmysqlclient -lpthread -lm -lssl -lcrypto -ldl)
    
    # make install命令,表示将target Cmake二进制文件安装到SOURCE目录下(当然,实际不推荐这么做)
    #install(TARGETS Cmake
    #        RUNTIME DESTINATION ${CMAKE_SOURCE_DIR})
    
    
  • 相关阅读:
    Android Butterknife(黄油刀) 使用方法总结【转】
    Andriod- 一些包
    Andriod- 学习网站
    Android热点 8.0 ,7.1 ,6.0一7.0 以及6.0以下热点创建到连接完全适配
    Android- 动态修改ToolBar的Menu菜单
    C#- Socket实现服务器与多个客户端通信
    html使用pdf.js途中遇到的坑和坑
    小程序内嵌H5页面和小程序内部页面互相传参和内嵌H5页面的调试
    记录一次Centos7宕机事件
    Spring Boot 2.x实战
  • 原文地址:https://www.cnblogs.com/seancheer/p/11990011.html
Copyright © 2011-2022 走看看