前言
CLion是JetBrains IDE系列之一,这是一款非常好用的C/C++开发工具,之前Linux下开发一直使用eclipse,自从发现了CLion,就一直爱不释手。CLion组织工程文件依赖cmake工具,只要编写好CMakeLists.txt,cmake工具就能帮我们生成Makefile,进而完成程序构建。如果所有源文件都在一个目录下,那么一个CMakeLists.txt就搞定了;但如果工程是多目录多层次的结构,情况就稍微复杂一些。
示例
目录结构
下面是本人写的一个纯示例工程,链接了第三方库aprche,并且包括3个独立模块,以静态库的方式链接入可执行程序,共有2个可执行程序,详细的目录结构如下:
├── CMakeLists.txt
├── inc
│ ├── apr
│ │ ├── apr.h
│ │ ├── apr_thread_mutex.h
│ │ ├── apr_thread_rwlock.h
│ │ └── ...
│ └── apr-util
│ ├── apu.h
│ ├── apu_version.h
│ └── ...
├── lib
│ ├── libapr-1.a
│ └── libaprutil-1.a
└── src
├── demo1
│ ├── CMakeLists.txt
│ └── main.c
├── demo2
│ ├── CMakeLists.txt
│ └── main.c
├── event
│ ├── CMakeLists.txt
│ ├── event.c
│ ├── event.h
│ └── rpc
│ ├── CMakeLists.txt
│ ├── rpc.c
│ └── rpc.h
├── log
│ ├── CMakeLists.txt
│ ├── log.c
│ └── log.h
└── net
├── CMakeLists.txt
├── net.c
└── net.h
顶层CMakeLists.txt
其中顶层的CMakeLists.txt用于描述哪些目录下的文件需要被编译,其内容如下:
cmake_minimum_required(VERSION 3.5)
project(demo_project C)
set(CMAKE_C_STANDARD 99)
add_subdirectory(src/event)
add_subdirectory(src/event/rpc)
add_subdirectory(src/net)
add_subdirectory(src/log)
add_subdirectory(src/demo1)
add_subdirectory(src/demo2)
模块的CMakeLists.txt
以下是src/event模块的CMakeLists.txt,其他模块类似。
cmake_minimum_required(VERSION 3.5)
include_directories(./rpc)
aux_source_directory(. SRC_LIST)
add_library(event STATIC ${SRC_LIST})
main函数所在目录的CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
include_directories(../event)
include_directories(../event/rpc)
include_directories(../log)
include_directories(../net)
include_directories(../../inc/apr)
include_directories(../../inc/apr-util)
link_directories(${PROJECT_SOURCE_DIR}/lib)
aux_source_directory(. SRC_LIST)
add_executable(demo1 ${SRC_LIST})
target_link_libraries(demo1 event)
target_link_libraries(demo1 rpc)
target_link_libraries(demo1 log)
target_link_libraries(demo1 net)
target_link_libraries(demo1 apr-1)
target_link_libraries(demo1 aprutil-1)
target_link_libraries(demo1 crypt)
target_link_libraries(demo1 pthread)
构建程序
- 进入相应的编译配置目录下,例如cmake-build-debug,执行:
cmake .. |
- 第一步完成后就生成了Makefile,执行make即可构建所有程序:
make |
- make成功后,在src/demo1目录下就生成了可执行程序。
结语
CLion用起来真的很顺手,界面风格也是非常奈斯,特别是Debug的时候感觉比eclipse好用多了,强烈推荐使用,愿大家用的哈皮!