本文档主要记录笔者使用cmake过程中编写CmakeLists.txt内涉及到的指令及其代表含义。
project(fakedu)
cmake_minimum_required(VERSION 3.0)
set( CMAKE_CXX_FLAGS "-std=c++11" )
set( PROJECT_SOURCE_DIR /home/grand/workarea/fake-dus/grand-fake-dus/ )
set( SRC_LIST
./fakeDU-src/message.cpp
./fakeDU-src/message_impl.cpp
./fakeDU-src/grand-virtual-du.cpp
./fakeDU-src/grand-virtual-du1.cpp )
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}fakeDU-app)
LINK_DIRECTORIES(/home/grand/pc_installed/lib)
INCLUDE_DIRECTORIES(/home/grand/pc_installed/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}fakeDU-src)
aux_source_directory(${PROJECT_SOURCE_DIR} SRC_LIST)
add_executable(fakedu1 ${SRC_LIST})
TARGET_LINK_LIBRARIES(fakedu1 libzmq.so)
一些代码注解
- TARGET_LINK_LIBRARIES(fakedu1 libzmq.so)
TARGET_LINK_LIBRARIES(fakedu1 libzmq.so)
目标链接库需要放在add_executable之后,逻辑上需要加在编译的可执行项目后,尽量书写全称,书写全称可避免动态库和静态库的区分。 - SRC_LIST
实例中的程序SRC_LIST代表了编译项目所需要的所有源cpp文件。aux_source_directory(${PROJECT_SOURCE_DIR} SRC_LIST)
使用的aux_source_directory表示告诉编译器去哪里找到编译项目所需要的源程序。 - INCLUDE_DIRECTORIES
告诉编译器所需要的头文件的所在位置,一般用外部链接库时需要额外添加