正常的c++可执行程序,都是一个CMakelists.txt就可以搞定的,而且clion默认就可以run + debug, 但是当我们要开发一个library时,就需要对这个library进行使用测试,默认的library不是executable,无法直接在clion中run或者debug的。
本文涵盖的另外一个点就是:Clion下一个project如何跑多个可执行文件
1、首先我们通过Clion新建一个C++ library项目, 此时ide会自动创建根目录下的CMakelists.txt文件,此时我们看简单分析下CMakeLists.txt文件
cmake_minimum_required(VERSION 3.17)
project(hello)
set(CMAKE_CXX_STANDARD 14)
add_library(hello library.cpp library.h)
add_subdirectory(examples)
此处定义了项目project名hello, 和executable项目不同的是,没有add_executable(...) ,也就是说改项目目前无法直接run或者debug,当我们把这个lirary的功能开发完成之后,肯定需要进行测试的,笔者这边使用Cmake的add_subdirectory命令,将library的使用用例放到一个独立的文件夹中, 笔者这边命名为examples。下面是笔者的项目目录:
2、当我们指定了库的用例代码文件夹之后,就在examples文件夹中新建一个CMakeLists.txt文件,内容如下
# 此处指定可执行文件的名称,这个可执行程序program就是用来测试library的用例 add_executable(program program.cpp) # 引用自己开发的library,第三方库,共享库,静态库等 target_include_directories(program PRIVATE .. ../) # target_include_directories:给目标指定头文件包含路径 target_link_libraries(program hello) # target_link_libraries:给目标指定链接的第三方库的路径位置# 切记!!不要再添加project(program), 这个对ide来说一个项目一个即可, ide也只会认一个, 否则整个项目名称都变了。
此时同步要做的是,在examples下新建一个cpp文件program.cpp 里面的main函数直接调用library的库代码进行测试
#include <iostream>
#include "library.h"
int main(int argc, char *argv[]) {
std::cout << "开始执行....\n";
hello();
return 0;
}
3、当以上都设置好了之后,右键根目录的CMakeLists.txt,选择Reload Cmake Project。此时就可以直接run或者debug program这个Target