在 CLion 中配置提升库
Configuring Boost Library in CLion
这是我第一次使用 Boost lib,所以我当然遇到了问题:
首先,这是我项目的CMAKELISTS.txt:
===========================================
src/CMAKELISTS.txt:
===========================================
cmake_minimum_required(VERSION 3.15)
project(My_String)
set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES MyString.cpp MyString.h main.cpp)
add_executable(My_String_src ${SOURCE_FILES})
===========================================
test/CMAKELISTS.txt:
===========================================
cmake_minimum_required(VERSION 3.15)
project(My_String)
set(CMAKE_CXX_STANDARD 17)
set(Boost_USE_STATIC_LIBS OFF)
set(SOURCE_FILES MyStringTest.cpp)
set(Boost_INCLUDE_DIR "C:\Program Files\Boost\boost_1_71_0")
set(Boost_LIBRARIES "C:\Program Files\Boost\boost_1_71_0")
find_package (Boost COMPONENTS unit_test_framework)
include_directories(${Boost_INCLUDE_DIR})
include_directories(../src)
add_executable (Boost_Tests_run ${SOURCE_FILES})
target_link_libraries (Boost_Tests_run ${Boost_LIBRARIES})
==============================================
top_level CMAKELISTS.txt for the whole project:
==============================================
cmake_minimum_required(VERSION 3.15)
project(My_String)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
add_subdirectory(test)
注意:我已经构建了 BOOST 库!enter code here
在MyStringTest中.cpp我有:
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE MyString_Test_Suite
#include <iostream>
#include "MyString.h"
#include "MyString.cpp"
#include <boost/test/unit_test.hpp>
构建项目时出现的错误:
[ 50%] Building CXX object test/CMakeFiles/Boost_Tests_run.dir/MyStringTest.cpp.obj
[100%] Linking CXX executable Boost_Tests_run.exe
C:PROGRA~1MINGW-~1X86_64~1.0-Pmingw64binar.exe: unable to rename 'CMakeFilesBoost_Tests_run.dir/objects.a'; reason: File exists
mingw32-make.exe[3]: *** [testCMakeFilesBoost_Tests_run.dirbuild.make:86: test/Boost_Tests_run.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFilesMakefile2:141: test/CMakeFiles/Boost_Tests_run.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFilesMakefile2:148: test/CMakeFiles/Boost_Tests_run.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:130: Boost_Tests_run] Error 2
我的配置有什么问题? 我需要做什么来修复它?
代码告诉链接器将此库../src
链接到可执行文件。这是一个无效的操作,因此请删除以下行:
target_link_libraries(Boost_Tests_run ../src)
要target_link_libraries()
的参数是为目标和库名称(包括库文件的完整路径(保留的。../src
参数不符合这两个条件中的任何一个,因为它只是一个目录。
编辑:另一个潜在的问题是你的Boost_LIBRARIES
变量。同样,如果它只包含目录路径,则不应将其提供给target_link_libraries()
。相反,它应包含库的完整路径,包括库名称。
但是,现代FindBoost.cmake
模块提供了更好的方法。如果您知道要使用的 Boost 组件(例如filesystem
(,您应该在find_package()
调用中指定这些组件:
find_package(Boost REQUIRED COMPONENTS filesystem)
然后,find 模块将为您填充导入的目标,您可以像这样链接到它们:
target_link_libraries(Boost_Tests_run PUBLIC Boost::filesystem)
我建议看看这个页面上的一些例子。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 无法在 CLion 中构建 C++ 项目
- 无法找到/读取配置文件.conf-FileIOException
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- C++:如何在CLion IDE中安装Boost
- 一种在C++中读取TXT配置文件的简单方法
- 生成MRPT库时cmake配置失败
- FFMPEG配置文件级别id大小无效
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何通过Conan和CMake找到用于pkg配置的.pc文件
- IDE (CLion) 无法解析C++模板类型
- 配置文件解析器仅返回以前的值
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 是否可以配置提升日志刷新?
- 在 CLion 中配置提升库
- 如何配置 Clion 来编译 gtkmm 项目
- 如何在 CLion 中配置项目的生成方式
- 用cmakelist.txt在clion上以一种不错的便携式方式配置sdl2
- 升级Mac OS,现在Clion不工作,问我配置路径不正确