0. 问题描述
最近在看陈硕大神的Muduo网络库,但是在CLion上试验的时候出了些问题。问题如下:
(1)如何编写CMakeLists.txt
?
(2)导入第三方头文件后,CLion中include这些头文件显示红色下划线(file not found)?
1. 问题解决
1.1 编写CMakeLists.txt
按照官方的文档,将从github下载下来的项目编译后,得到两个文件夹:{your-path}/build/release-install-cpp11
和{your-path}/build/release-cpp11
。不过我们只用{your-path}/build/release-install-cpp11
即可,该文件夹下有两个子文件夹:lib
为静态链接库,include
为头文件,我们需要在CMakeLists.txt中将这两个加到项目中,我的如下:
cmake_minimum_required(VERSION 3.16)
project(LearningMuduo)
set(CMAKE_CXX_STANDARD 20)
# 添加thread库
set(THREAD_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
# 导入muduo静态链接库和头文件
include_directories(your-path/build/release-install-cpp11/include)
link_directories(your-path/build/release-install-cpp11/lib)
add_executable(${PROJECT_NAME} main.cpp)
# 链接
TARGET_LINK_LIBRARIES(${PROJECT_NAME} Threads::Threads)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libmuduo_net.a libmuduo_base.a)
这里我一开始有个小疑惑,就是link_libraries
和target_link_libraries
的区别,大家可以看看这篇文章。
1.2 导入第三方头文件后,CLion中include头文件显示红色下划线(file not found)
这个问题在之前也出现过,但是后面神奇地”消失了“。解决的方法是在官方文档中找到的,描述如下:
按照文档说的Tools | Resync with Remote Hosts
,这个步骤会比较慢,等它加载完后,会在External Libraries
下增加Muduo的include头文件,这样红色波浪线就消失了~~