相关疑难解决方法(0)

将 boost::json 静态库与 cmake 一起使用

我有这个CMakeLists.txt

set(Boost_USE_STATIC_LIBS   ON)
find_package(Boost REQUIRED COMPONENTS json)
include_directories(${BOOST_INCLUDE_DIRS})
target_link_libraries(<Target> PRIVATE Boost::json)
Run Code Online (Sandbox Code Playgroud)

但我收到 cmake 警告

[cmake] CMake Warning at C:/Program Files/CMake/share/cmake3.20/Modules/FindBoost.cmake:2185 (message):
[cmake]   No header defined for json; skipping header check (note: header-only
[cmake]   libraries have no designated component)
Run Code Online (Sandbox Code Playgroud)

该项目可以配置和构建。~~但是compile_command.json我发现实际上并没有链接到静态库,这清楚地表明它没有找到并且被编译为仅标头库。~~

编辑:我发现它实际上链接到libboost_json-mt.a生成的build.ninja文件中,所以奇怪的是 cmake 在调用中找不到静态库find_package

build MyTest.exe MyTest[1]_tests.cmake: CXX_EXECUTABLE_LINKER__MyTest_Debug CMakeFiles/MyTest.dir/test.cpp.obj CMakeFiles/MyTest.dir/BasicStructures/Uri.cpp.obj | C$:/msys64/mingw64/lib/libgtest_main.dll.a C$:/msys64/mingw64/lib/libboost_json-mt.a C$:/msys64/mingw64/lib/libgtest.dll.a C$:/msys64/mingw64/lib/libboost_container-mt.a
  FLAGS = -g
  LINK_LIBRARIES = C:/msys64/mingw64/lib/libgtest_main.dll.a  C:/msys64/mingw64/lib/libboost_json-mt.a  C:/msys64/mingw64/lib/libgtest.dll.a  C:/msys64/mingw64/lib/libboost_container-mt.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake

6
推荐指数
1
解决办法
3940
查看次数

标签 统计

boost ×1

c++ ×1

cmake ×1