在centos 7上安装OAT++失败



我尝试安装OAT++。但失败了。

操作系统信息

[root@localhost build]# cat /etc/*-release
CentOS Linux release 7.6.1810 (Core)

如何解决以下错误?

[ 84%] Building CXX object test/CMakeFiles/oatppAllTests.dir/oatpp/core/data/share/StringTemplateTest.cpp.o
/home/happyteam/jjumdong/oatpp/test/oatpp/core/data/share/StringTemplateTest.cpp: In member function 'virtual void oatpp::test::core::data::share::StringTemplateTest::onRun()':
/home/happyteam/jjumdong/oatpp/test/oatpp/core/data/share/StringTemplateTest.cpp:38:52: error: call of overloaded 'format(<brace-enclosed initializer list>)' is ambiguous
auto result = t.format({oatpp::String("Hello")});
^
/home/happyteam/jjumdong/oatpp/test/oatpp/core/data/share/StringTemplateTest.cpp:38:52: note: candidates are:
In file included from /home/happyteam/jjumdong/oatpp/test/oatpp/core/data/share/StringTemplateTest.cpp:27:0:
/home/happyteam/jjumdong/oatpp/src/oatpp/core/data/share/StringTemplate.hpp:175:17: note: oatpp::String oatpp::data::share::StringTemplate::format(const std::vector<oatpp::data::mapping::type::String>&) const
oatpp::String format(const std::vector<oatpp::String>& params) const;
^
/home/happyteam/jjumdong/oatpp/src/oatpp/core/data/share/StringTemplate.hpp:189:17: note: oatpp::String oatpp::data::share::StringTemplate::format(const String&) const
oatpp::String format(const oatpp::String& singleValue) const;
^

我在ubuntu上成功安装了OAT++。

为什么在centos 7上安装OAT++失败?

您有失败的测试,而不是oatpp库本身
只需通过添加-DOATPP_BUILD_TESTS=OFFcmake标志来禁用测试并重建:

cmake -DOATPP_BUILD_TESTS=OFF ..
make install

修复测试:

在文件oatpp/test/oatpp/core/data/share/StringTemplateTest中更改所有出现类似代码:

auto result = t.format({oatpp::String("Hello")});

auto result = t.format(std::vector<oatpp::String>({"Hello"}));

如果您修复了测试,请发送PR

最新更新