Kdevelop, C++, Debian, libcppunit problem

Все о программировании под *nix
Аватара пользователя
Lamer_Sirex
Заглянувший
Сообщения: 12
Зарегистрирован: 15 сен 2005, 01:06
Откуда: Минск

Kdevelop, C++, Debian, libcppunit problem

Сообщение Lamer_Sirex »

Добрый день. Сталкнулся с проблемой тестирования кода. Как и ожидалось заюзал библиотеку cppunit.
Со старта написал вот такой main.cpp (был взят из примера):

Код: Выделить всё

#include <iostream>
#include <cstdlib>

#include <cppunit>
#include <cppunit>
#include <cppunit>
#include <cppunit>

#include "testconfigurator/testconfigurator.h"

int main()
{
	CppUnit::Test *suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
	CppUnit::TextUi::TestRunner runner;
	runner.addTest(suite);
	runner.setOutputter(new CppUnit::CompilerOutputter(&runner.result(), std::cout));
	bool wasSuccessfull = runner.run();
	if (!wasSuccessfull != 0) std::cout << "Error" << std::endl;
	std::cout << "[OVAL] Cppunit-result ="<< !wasSuccessfull << std::endl;
	return EXIT_SUCCESS;
}
Собственно, сам testconfigurator.h

Код: Выделить всё

#ifndef TESTCONFIGURATOR_H
#define TESTCONFIGURATOR_H

#include <cppunit>
#include <cppunit>


	class TestConfigurator : public CppUnit::TestFixture {
			CPPUNIT_TEST_SUITE(TestConfigurator);
			CPPUNIT_TEST(test1);
			CPPUNIT_TEST_SUITE_END();
			
		private:
		public:			
			void setUp();
			void tearDown();
			
			void test1();	
	};


CPPUNIT_TEST_SUITE_REGISTRATION(TestConfigurator);

#endif
Добавил флаги -lcppunit -ldl. Компилирую проект - всё компилится, но когда собираю пишет вот такую ошибку:
cd '/home/sirex/proj/stars/test' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make test
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -o test main.o ../test/testconfigurator/libtestConfigurator.la -lcppunit -ldl
g++ -g -O2 -o test main.o ../test/testconfigurator/.libs/libtestConfigurator.a /usr/lib/libcppunit.so -ldl
main.o: In function `TestConfigurator':
testconfigurator/testconfigurator.h:28: undefined reference to `vtable for TestConfigurator'
main.o: In function `TestConfigurator::getTestNamer__()':
testconfigurator/testconfigurator.h:29: undefined reference to `typeinfo for TestConfigurator'
testconfigurator/testconfigurator.h:29: undefined reference to `typeinfo for TestConfigurator'
collect2: ld returned 1 exit status
make: *** [test] Ошибка 1
*** Завершено с кодом: 2 ***
Причем, если в testconfigurator.h закомментировать "CPPUNIT_TEST_SUITE_REGISTRATION(TestConfigurator);", то всё впорядке.
Что ему не нравиться?
Сколько мы ещё не сделали, и сколько нам ещё предстоит не сделать

Помогайте Micrisoft в борьбе с пиратами, устанавливайте друзьям Linux

Аватара пользователя
Lamer_Sirex
Заглянувший
Сообщения: 12
Зарегистрирован: 15 сен 2005, 01:06
Откуда: Минск

Сообщение Lamer_Sirex »

Хм. почему-то форму "сожрал" пути в include в главном это
cppunit/extensions/TestFactoryRegistry.h
cppunit/ui/text/TestRunner.h
cppunit/CompilerOutputter.h
cppunit/XmlOutputter.h
а в testconfigurator.h
cppunit/extensions/HelperMacros.h
cppunit/portability/Stream.h
Сколько мы ещё не сделали, и сколько нам ещё предстоит не сделать

Помогайте Micrisoft в борьбе с пиратами, устанавливайте друзьям Linux

Аватара пользователя
Lamer_Sirex
Заглянувший
Сообщения: 12
Зарегистрирован: 15 сен 2005, 01:06
Откуда: Минск

Сообщение Lamer_Sirex »

Ха, заработало, делюсь впечатлениями:
после очередного апдейта документации с сайта увидел, что CPPUNIT_TEST_SUITE_REGISTRATION(TestConfigurator);
нужно писать не в хеадере а в cpp-файле
Но и это не всё, юзая Kdevelop создавая подпроекты, как рекомендуют на форуме (используя libtool + noinst) не помогает, cpp файлы должны быть в одной цели и компилится сразу. Пришлось ручками править Makefile.am
Сколько мы ещё не сделали, и сколько нам ещё предстоит не сделать

Помогайте Micrisoft в борьбе с пиратами, устанавливайте друзьям Linux

Ответить