Support Request #4249
closedFailed to compile components of ADTF File Library on Ubuntu
Description
Supportanfrage
ich will die adtf-file-library 0.2.1 auf einem Ubuntu system so wie im README
angegeben kompilieren. Leider schlägt das Kompilieren der ddl Library fehl.
- System Ubuntu 16.04.5 LTS
- adtf_file-0.2.1.zip, a_util-5.1.0.zip, ddl-4.0.3.zip aus dem Download Center
von digitalwerk.net heruntergeladen - cmake 3.12 von cmake.org binary runtergeladen und separat installiert
(a_util erfordert mind. 3.8) - a_util-5.1.0 mit cmake und make kompiliert und installiert nach
/usr/local/adtf-toolboxes/filelib/0.2.1 - ddl-4.0.3: Makefile erstellt mit dem gleichen CMAKE_INSTALL_PREFIX wie
a_util
Beim Kompilieren mit make bekommt man folgenden Fehler:
[1]heinrich@ubuntu:~/adtf_file_lib-0.2.1/ddl-4.0.3/Debug$ make
Scanning dependencies of target ddl
[ 1%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddl_error.cpp.o
[ 2%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlversionhelper.cpp.o
[ 4%] Building CXX object CMakeFiles/ddl.dir/ddlrepresentation/ddl.cpp.o
[ 5%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlalignment.cpp.o
[ 6%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlbyteorder.cpp.o
[ 8%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlcomplex.cpp.o
[ 9%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddldatatype.cpp.o
[ 10%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlheader.cpp.o
[ 12%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlstream.cpp.o
[ 13%] Building CXX object CMakeFiles/ddl.dir/ddlrepresentation/ddlenum.cpp.o
[ 15%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlcontainer.cpp.o
[ 16%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddldescription.cpp.o
[ 17%] Building CXX object CMakeFiles/ddl.dir/ddlrepresentation/ddlunit.cpp.o
[ 19%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlrefunit.cpp.o
[ 20%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlprefix.cpp.o
[ 21%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlextdeclaration.cpp.o
[ 23%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlelement.cpp.o
[ 24%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlbaseunit.cpp.o
[ 26%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlstreamstruct.cpp.o
[ 27%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlprinter.cpp.o
[ 28%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlimporter.cpp.o
[ 30%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlcloner.cpp.o
[ 31%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlresolver.cpp.o
[ 32%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlrepair.cpp.o
[ 34%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlinspector.cpp.o
[ 35%] Building CXX object
CMakeFiles/ddl.dir/ddlrepresentation/ddlcompare.cpp.o
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:
In static member function ‘static a_util::result::Result
ddl::cDDLCompare::IsBinaryEqual(const string&, const string&, const string&,
const string&, bool)’:
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:105:5:
error: ‘unique_ptr’ is not a member of ‘std’
std::unique_ptr<cDDLDescription>
pRefDesc(cDDLDescription::CreateDefault())
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:105:5:
note: suggested alternatives:
In file included from
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/memory/unique_ptr.h:33:0,
from
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/memory.h:24,
from
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/filesystem/path.h:20,
from
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/filesystem.h:20,
from /home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddl.h:46,
from
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:17:
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/memory/detail/unique_ptr_fallback_decl.h:35:7:
note: ‘a_util::memory::detail::unique_ptr’
class unique_ptr
^
/usr/local/adtf-toolboxes/filelib/0.2.1/include/a_util/memory/detail/unique_ptr_fallback_decl.h:35:7:
note: ‘a_util::memory::detail::unique_ptr’
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:105:36:
error: expected primary-expression before ‘>’ token
std::unique_ptr<cDDLDescription>
pRefDesc(cDDLDescription::CreateDefault())
^
/home/heinrich/adtf_file_lib-0.2.1/ddl-4.0.3/ddlrepresentation/ddlcompare.cpp:105:79:
error: ‘pRefDesc’ was not declared in this scope
std::unique_ptr<cDDLDescription>
pRefDesc(cDDLDescription::CreateDefault());
CMakeFiles/ddl.dir/build.make:662: recipe for target
'CMakeFiles/ddl.dir/ddlrepresentation/ddlcompare.cpp.o' failed
make2: * [CMakeFiles/ddl.dir/ddlrepresentation/ddlcompare.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/ddl.dir/all' failed
make1: [CMakeFiles/ddl.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: ** [all] Error 2
Können Sie hier unterstützen?
Lösung
Das Problem ist ein fehlerhaftes Verhalten der CMakeFiles der a_utils mit CMake 3.12. Man muss bei der 5.1 leider zwingend Cmake 3.9.x einsetzen, sonst klappt es nicht. Laut AEV ist das bei neueren a_utils gefixed. Also ich habs letztendlich mit Cmake 3.9.6 und folgendem Aufruf hinbekommen, bitte bei allen drei Projekten (a_utils, ddl, adtf_file) verwenden:
~/devel/cmake-3.9.6-Linux-x86_64/bin/cmake -DCMAKE_CXX_STANDARD=14 -DCMAKE_INSTALL_PREFIX=<blah> -DCMAKE_BUILD_TYPE=Debug -Da_util_cmake_enable_documentation=0 <src>