Merge pull request #99 from xmake-io/jsoncpp

add jsoncpp
pull/101/head
ruki 4 years ago committed by GitHub
commit 57a5f7073e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      packages/c/cmake/xmake.lua
  2. 47
      packages/j/jsoncpp/xmake.lua

@ -13,7 +13,7 @@ package("cmake")
add_versions("3.11.4", "2b5eb705f036b1906a5e0bce996e9cd56d43d73bdee8318ece3e5ce31657b812")
add_versions("3.15.4", "adfbf611d21daa83b9bf6d85ab06a455e481b63a38d6e1270d563b03d4e5f829")
add_versions("3.18.4", "9d27049660474cf134ab46fa0e0db771b263313fcb8ba82ee8b2d1a1a62f8f20")
elseif is_host("linux") and is_arch("x86_64") then
elseif is_host("linux") and os.arch() == "x86_64" then
add_urls("https://cmake.org/files/v$(version)-Linux-x86_64.tar.gz", {version = function (version)
return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version
end})

@ -0,0 +1,47 @@
package("jsoncpp")
set_homepage("https://github.com/open-source-parsers/jsoncpp/wiki")
set_description("A C++ library for interacting with JSON.")
set_urls("https://github.com/open-source-parsers/jsoncpp/archive/$(version).zip")
add_versions("1.9.4", "6da6cdc026fe042599d9fce7b06ff2c128e8dd6b8b751fca91eb022bce310880")
add_deps("cmake")
on_install("linux", "macosx", "android", "iphoneos", "windows", "mingw", "cross", function(package)
local configs = {"-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF", "-DJSONCPP_WITH_TESTS=OFF"}
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
table.insert(configs, "-DBUILD_STATIC_LIBS=" .. (package:config("static") and "ON" or "OFF"))
table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
import("package.tools.cmake").install(package, configs)
end)
on_test(function(package)
assert(package:check_cxxsnippets({
test = [[
#include <iostream>
#include <assert.h>
static void test() {
const std::string rawJson = R"({"Age": 20, "Name": "colin"})";
const auto rawJsonLength = static_cast<int>(rawJson.length());
constexpr bool shouldUseOldWay = false;
JSONCPP_STRING err;
Json::Value root;
if (shouldUseOldWay) {
Json::Reader reader;
reader.parse(rawJson, root);
} else {
Json::CharReaderBuilder builder;
const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root,
&err)) ;
}
const std::string name = root["Name"].asString();
const int age = root["Age"].asInt();
assert(name == "colin");
assert(age == 20);
}
]]
}, {configs = {languages = "c++11"}, includes = "json/json.h"}))
end)
Loading…
Cancel
Save