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})
    
    
  • 相关阅读:
    ABAP实现屏幕自己刷新和跳转功能
    SAP 邮件发送
    MIRO做发票校验时实现替代功能的多种方式
    SAP资产折旧,消息编号AA687:在上一年结算之后您只能记帐到新的一年
    SAP 月结F.19与GR/IR
    ABAP字符串的加密与解密
    ABAP DEBUG
    NUMBER_GET_NEXT
    OO ALV 学习参考
    Crontab定时任务配置
  • 原文地址:https://www.cnblogs.com/seancheer/p/11990011.html
Copyright © 2011-2022 走看看