Boost test verlinken
Möchte ich Boost test
in meinem Projekt.
Ich cmake in meinem Projekt, also schrieb ich ein einfaches CMakeList.txt
für die Verpackung:
find_package (Boost COMPONENTS unit_test_framework REQUIRED)
file(GLOB_RECURSE UnitTests_sources tests/*.cpp)
add_executable(UnitTests
${UnitTests_sources}
)
enable_testing()
ADD_TEST (UnitTests UnitTests)
So, cmake funktioniert gut hier. Der ärger wird beim kompilieren:
Linking CXX executable ../../bin/UnitTests
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/../../../../lib/crt1.o:
Funktion_start': (.text+0x20): undefined reference to
main'
collect2: ld zurückgegeben, 1 exit status
Hier ist die einzige Datei, die in tests Ordner (LogManagerTest.cpp
):
#include "Utils/LogManager.hpp"
#include <boost/test/unit_test.hpp>
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE LogManager
BOOST_AUTO_TEST_CASE(LogManagerCase)
{
BOOST_REQUIRE(true);
/*LogManager manager;
manager.Initialize();
manager.Deinitialize();*/
}
Was ist hier falsch?
InformationsquelleAutor der Frage Ockonal | 2011-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
Ihrem CMakeLists.txt also es wird automatisch eine main() für Sie.
Auch,
muss definiert werden, bevor Sie unit_test.hpp.
Finden Sie weitere Informationen und Optionen auf:
http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/utf/compilation.html
InformationsquelleAutor der Antwort André Puel
Müssen Sie zum kompilieren mit -lboost_unit_test_framework, boost erzeugt das wichtigste für Sie, wenn Sie die
BOOST_TEST_DYN_LINK
so müssen Sie sagen, das makefile zu sehen, dass für main. Anschließend kompilieren Sie Sie, die folgenden:InformationsquelleAutor der Antwort shuttle87
Versuchen Sie
bevor Ihr schließt - es funktionierte für mich.
InformationsquelleAutor der Antwort user2667330
Einmal machte ich einen dummen Tippfehler und bekam auch diese. Und der compiler wurde betrogen.
Nur als "#define BOOTS_TEST_MODULE DUMMY". Ja, ich mag die Stiefel 🙂
InformationsquelleAutor der Antwort DAG