前言

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)

构建程序

  1. 进入相应的编译配置目录下,例如cmake-build-debug,执行:
cmake ..
  1. 第一步完成后就生成了Makefile,执行make即可构建所有程序:
make
  1. make成功后,在src/demo1目录下就生成了可执行程序。

结语

CLion用起来真的很顺手,界面风格也是非常奈斯,特别是Debug的时候感觉比eclipse好用多了,强烈推荐使用,愿大家用的哈皮!

Logo

更多推荐