目录
- ├── 3rdparty
- │ └── jsoncpp
- │ ├── include
- │ └── src
- ├── build
- ├── CMakeLists.txt
- └── main.cpp
- cmake_minimum_required(VERSION 3.11)
-
- project(cmake_3rd)
- set(CMAKE_CXX_STANDARD 17)
-
- set(SRC_MAIN main.cpp)
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp/include)
-
- aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp/src jsoncpp)
- add_executable(main ${SRC_MAIN} ${jsoncpp})
- #include
- #include "json/json.h"
-
- int main(int argc, char const *argv[])
- {
- Json::Value json;
- json["name"] = "wiki";
- json["age"] = 18;
- std::cout << json.toStyledString() << std::endl;
- return 0;
- }
- ├── 3rdparty
- │ └── jsoncpp
- │ ├── CMakeLists.txt
- │ ├── include
- │ └── src
- ├── build
- ├── CMakeLists.txt
- └── main.cpp
- project(jsoncpp)
- aux_source_directory(./src SRC_JSONCPP)
- add_library(jsoncpp ${SRC_JSONCPP})
- cmake_minimum_required(VERSION 3.11)
-
- project(cmake_3rd)
-
- set(CMAKE_CXX_STANDARD 17)
-
- set(SRC_MAIN main.cpp)
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp/include)
-
- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp)
-
- add_executable(main ${SRC_MAIN})
- target_link_libraries(main jsoncpp)
-
jsoncpp工程,生成lib库
- ├── build
- ├── CMakeLists.txt
- ├── include
- │ └── json
- │ ├── allocator.h
- │ ├── assertions.h
- │ ├── autolink.h
- │ ├── config.h
- │ ├── features.h
- │ ├── forwards.h
- │ ├── json.h
- │ ├── reader.h
- │ ├── value.h
- │ ├── version.h
- │ └── writer.h
- └── src
- ├── json_reader.cpp
- ├── json_tool.h
- ├── json_value.cpp
- ├── json_valueiterator.inl
- ├── json_writer.cpp
- └── version.h.in
-
- cmake_minimum_required(VERSION 3.11)
- project(jsoncpp)
-
- include_directories(${PROJECT_SOURCE_DIR}/include)
- aux_source_directory(./src SRC_JSONCPP)
- add_library(lib_jsoncpp_static STATIC ${SRC_JSONCPP})
- add_library(lib_jsoncpp_dynamic SHARED ${SRC_JSONCPP})
-
- set_target_properties(lib_jsoncpp_static PROPERTIES OUTPUT_NAME "jsoncpp")
- set_target_properties(lib_jsoncpp_dynamic PROPERTIES OUTPUT_NAME "jsoncpp")
-
- set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
将jsoncpp/build/lib文件夹拷贝到使用者目录(main.cpp所在目录的build目录下)
main.cpp工程
- ├── 3rdparty
- │ └── jsoncpp
- │ └── include
- ├── build
- │ ├── lib
- │ │ ├── libjsoncpp.a
- │ │ └── libjsoncpp.so
- ├── CMakeLists.txt
- └── main.cpp
-
- cmake_minimum_required(VERSION 3.11)
-
- project(cmake_3rd)
-
- set(CMAKE_CXX_STANDARD 17)
-
- set(SRC_MAIN main.cpp)
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp/include)
-
- link_directories(${PROJECT_BINARY_DIR}/lib)
- add_executable(main ${SRC_MAIN})
- target_link_libraries(main libjsoncpp.a)
- link_directories:执行后可以链接该目录下的多个库文件
- cmake_minimum_required(VERSION 3.11)
-
- project(cmake_3rd)
-
- set(CMAKE_CXX_STANDARD 17)
-
- set(SRC_MAIN main.cpp)
-
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jsoncpp/include)
-
- add_executable(main ${SRC_MAIN})
- find_library(lib_jsoncpp NAMES libjsoncpp.so PATHS ${PROJECT_BINARY_DIR}/lib)
- target_link_libraries(main ${lib_jsoncpp})
- find_library:执行后,只能使用该库(如果工程需要链接其他目标,则需要再次find_library)