Emmanuel Amodu
Emmanuel Amodu

Reputation: 197

How do I Import jsoncpp to my project sub directory

I am working on a project with this directory structure.

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

root CMakeLists.txt file content

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 file content

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)

root conanfile.txt file content

[requires]
jsoncpp/1.9.5
gtest/1.11.0

[generators]
CMakeDeps
CMakeToolchain
cmake_find_package

when I run the command cmake --build /home/user/weasle/build, I get this error

[ 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

How can I properly use the jsoncpp package in the project, I plan on making the content of weasel folder a package in future, so I don't want to include jsoncpp package in the root cmake folder.

Upvotes: 0

Views: 162

Answers (1)

Chukwujiobi Canon
Chukwujiobi Canon

Reputation: 3995

How can I properly use the jsoncpp package in the project

Do this

find_package(jsoncpp REQUIRED)
target_link_libraries(Weasel PRIVATE jsoncpp_lib)

Upvotes: 1

Related Questions