Martchus / cpp-utilities

Common C++ classes and routines used by my applications such as argument parser, IO and conversion utilities
GNU General Public License v2.0
52 stars 18 forks source link

Tests fail to link: ld: error: unable to find library -lcppunit #27

Closed yurivict closed 1 year ago

yurivict commented 1 year ago
[100% 1/1] : && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -fstack-protector-strong CMakeFiles/c++utilities_tests.dir/tests/cppunit.cpp.o CMakeFiles/c++utilities_tests.dir/tests/conversiontests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/iotests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/chronotests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/argumentparsertests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/traitstests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/mathtests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/misctests.cpp.o -o c++utilities_tests  -Wl,-rpath,/usr/ports/devel/cpp-utilities/work/.build:/usr/local/lib  -lcppunit  libc++utilities.so.5.24.0  /usr/local/lib/libboost_iostreams.so  /usr/local/lib/libboost_regex.so && :
FAILED: c++utilities_tests 
: && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -fstack-protector-strong CMakeFiles/c++utilities_tests.dir/tests/cppunit.cpp.o CMakeFiles/c++utilities_tests.dir/tests/conversiontests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/iotests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/chronotests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/argumentparsertests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/traitstests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/mathtests.cpp.o CMakeFiles/c++utilities_tests.dir/tests/misctests.cpp.o -o c++utilities_tests  -Wl,-rpath,/usr/ports/devel/cpp-utilities/work/.build:/usr/local/lib  -lcppunit  libc++utilities.so.5.24.0  /usr/local/lib/libboost_iostreams.so  /usr/local/lib/libboost_regex.so && :
ld: error: unable to find library -lcppunit
c++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
*** Error code 1

It looks like pkg-config's output is ignored:

$ pkg-config --libs cppunit
-L/usr/local/lib -lcppunit 
Martchus commented 1 year ago

I've just been looking at the CMake code and I guess finding CppUnit needs to be improved. The lookup is also not completely unreasonable, though. So I am wondering whether the build system even used pkg-config at all in your case? If Cppunit not detected via pkg-config so the version couldn't be checked. shows up in the configuration logs then that's not the case and it had to resort to find_library. You can set CPP_UNIT_LIB and CPP_UNIT_INCLUDE_DIR to workaround this for now.

Martchus commented 1 year ago

I've just pushed a potential fix (https://github.com/Martchus/cpp-utilities/commit/5ebbd0eb3f72510d1b1678b967ce4acce17914cd) so you might try building the latest commit on GitHub.

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.