不保证有效,很多教程的 cmake 都是带版本号的
1、先安装 boost 库
brew install boost
2、clion 工程的 CMakeLists.txt 需要修改,这是我的 CMakeLists.txt,带详细注释
- cmake_minimum_required(VERSION 3.25)
- project(cliontest) # cliontest 是工程名称,后面用到
-
- set(CMAKE_CXX_STANDARD 17)
- FIND_PACKAGE(Boost REQUIRED COMPONENTS date_time filesystem system thread) # COMPONENTS 后面都是库名
-
- message(WARNING ${Boost_VERSION_STRING}) # 打印版本号
- if(Boost_FOUND)
- include_directories(${Boost_INCLUDE_DIRS}) # 包含头文件
- add_executable(cliontest main.cpp) # 先添加执行文件
- target_link_libraries(cliontest ${Boost_LIBRARIES}) # 再添加库
- endif()
CMakeLists.txt 文件区分大小写
3、重新构建(清理再构建,或者直接重新构建)(test 是我的项目名)

4、如果 cpp 写代码没有智能提示(输入 #include
#include
5、测试代码,如果编译不报错就行
- #include
- #include
-
- int main() {
- return 0;
- }
1、问题一
ninja: error: unknown target 'cliontest'
我遇到的情况是 FIND_PACKAGE 写的有问题
2、问题二
ld: symbol(s) not found for architecture arm64
问题表面是 arm64 没有找到支持的库,关于 boost,实际上是 CMakeLists.txt 没有正确引入对应的库,比如上面我的 FIND_PACKAGE,我在最后指定了
date_time filesystem system thread
像 boost 必须手动指定你要链接的库名,不然你使用 target_link_libraries 去链接库的时候,这个变量 ${Boost_LIBRARIES} 就是空值,链接(需要库的)必报错,比如你要使用 boost 里的 thread,FIND_PACKAGE 不加 thread 必编译不过,关于详细说明在 FindBoost.cmake 这个文件里
参考