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})

猜你喜欢

转载自www.cnblogs.com/seancheer/p/11990011.html