CLion Cmake Multi target
Xcode8开始禁用第三方插件,快捷键各种不舒服,还是切换到jetbrains家的Clion了.
A cross-platform IDE for C and C++ https://www.jetbrains.com/clion/.
CLion 2016.3.2
现在只支持Cmake.
Cmake用来生成makefile,也可以导出xcode项目或VS项目,优势是跨平台和句法简洁.
下面小结一下配置过程:
项目目录树
根CmakeLists.txt
每个目录都有一个CmakeLists.txt.
这是根目录下的CmakeLists.txt, #
为注释.
Cmake命令不区分大小写,命名的关键词区分.
# 指定使用cmake版本最低是3.6
CMAKE_MINIMUM_REQUIRED(VERSION 3.6)
# 项目名
PROJECT(data_structure)
# 引入子目录
ADD_SUBDIRECTORY(data_structure)
ADD_SUBDIRECTORY(LNode_test)
ADD_SUBDIRECTORY(LNode)
data_structure/CmakeLists.txt
项目的主入口main.c
放在这个目录下,
现在还只有一个HelloWorld,只需要生成一个target就能让他跑起来.
SET
用来设置一个命名,即data_structure_SRC
包含了main.c
这个文件.
ADD_EXECUTABLE
生成可执行的target.
SET(data_structure_SRC
main.c
)
ADD_EXECUTABLE(data_structure ${data_structure_SRC})
设置好这一步就可以点IDE右上角Run/Debug Configurations
.
如果还跑步起来就手动清理cmake-build-debug
目录再 Reload Cmake Project
.
LNode/CmakeLists.txt
LNode是一个简单的单向链表库.
ADD_LIBRARY
添加库,库名为LNode
,库文件是LNode_SRC
中定义的.
SET(LNode_SRC
LNode.c
)
ADD_LIBRARY(LNode ${LNode_SRC})
LNode_test/CmakeLists.txt
LNode_test/main.c
用来测试LNode,把它设为另一个target,
区别于项目的主入口data_structure/target
的main.
${PROJECT_SOURCE_DIR}
是个Cmake自动生成的全局变量,指向项目根目录.
# 引入库
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/LNode)
SET(LNode_test_SRC
main.c
)
# 生成可执行的target
ADD_EXECUTABLE(LNode_test ${LNode_test_SRC})
# 链接库
TARGET_LINK_LIBRARIES(LNode_test LNode)