Reputation: 197
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
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