cmake 如何将jsoncpp导入到项目子目录

mw3dktmi  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(60)

我正在使用这个目录结构进行一个项目。

WeaselTestApp
    --build
       ...
    --weasel
        ...
        --CMakeLists.txt
   --main.cpp
   --CMakeLists.txt
   --conanfile.txt

字符串
根CMakeLists.txt文件内容

cmake_minimum_required(VERSION 3.16)
project(WeaselTestApp LANGUAGES CXX)
add_executable(WeaselTestApp main.cpp)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

enable_testing()
add_subdirectory(weasel)
target_link_libraries(WeaselTestApp PRIVATE Weasel)


weasel CMakeLists.txt文件内容

add_library(Weasel Utils.cpp HttpMethod.cpp HttpStatus.cpp Request.cpp Response.cpp Router.cpp Server.cpp)

include_directories(${CONAN_INCLUDE_DIRS_JSONCPP})
set(jsoncpp_DIR "/home/emmanuel/weasle/build")
find_package(jsoncpp REQUIRED)

target_link_libraries(Weasel PRIVATE jsoncpp)


根conanfile.txt文件内容

[requires]
jsoncpp/1.9.5
gtest/1.11.0

[generators]
CMakeDeps
CMakeToolchain
cmake_find_package


当我运行命令cmake --build /home/user/weasle/build时,我得到这个错误

[ 10%] Building CXX object weasel/CMakeFiles/Weasel.dir/Utils.cpp.o
[ 20%] Building CXX object weasel/CMakeFiles/Weasel.dir/HttpMethod.cpp.o
[ 30%] Building CXX object weasel/CMakeFiles/Weasel.dir/HttpStatus.cpp.o
[ 40%] Building CXX object weasel/CMakeFiles/Weasel.dir/Request.cpp.o
In file included from /home/user/weasle/weasel/Request.cpp:1:
/home/user/weasle/weasel/Request.h:5:10: fatal error: json/json.h: No such file or directory
    5 | #include <json/json.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [weasel/CMakeFiles/Weasel.dir/build.make:118: weasel/CMakeFiles/Weasel.dir/Request.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:126: weasel/CMakeFiles/Weasel.dir/all] Error 2
gmake: *** [Makefile:101: all] Error 2


如何在项目中正确使用jsoncpp包,我计划将来将weasel文件夹的内容作为一个包,所以我不想在根cmake文件夹中包含jsoncpp包。

carvr3hs

carvr3hs1#

如何在项目中正确使用jsoncpp

这样做

find_package(jsoncpp REQUIRED)
target_link_libraries(Weasel PRIVATE jsoncpp_lib)

字符串

相关问题