Как написать Check test makefile.am с несколькими исходными файлами и заголовками? - PullRequest
1 голос
/ 15 февраля 2011

Кто-нибудь знал, как написать Проверьте makefile.am, если в тестовом коде у нас больше, чем * .c файл?Пример:

#include "../src/SpeedGauge.h"
#include "../src/CruiseManager.h"
#include "../src/Throttle.h"

SpeedGauge speedo;
CruiseManager controller;
Throttle throttle;

/* Test case for  - Case1 */
START_TEST (test_Case1)
{
    int expected = 11; // TODO: Initialize to an appropriate value
    speedo.time = 1111; // TODO: Initialize to an appropriate value
    speedo.rotaryCount = 3333; // TODO: Initialize to an appropriate value

    // tick: 1
    SpeedGauge_calcSpeed(&speedo);
    CruiseManager_set(&controller);
    Throttle_normal(&throttle);

    int result = throttle.throttleVal;

    fail_unless (result == expected, "Expecting <%i> instead of <%i>", expected, result);
}
END_TEST

Это мой makefile.am:

## Process this file with automake to produce Makefile.in

lib_LTLIBRARIES = libSpeedGauge.la libCruiseManager.la libThrottle.la
libSpeedGauge_la_SOURCES = SpeedGauge.c SpeedGauge.h CruiseManager.c CruiseManager.h Throttle.c Throttle.h

bin_PROGRAMS = main
main_SOURCES = main.c
main_LDADD = libSpeedGauge.la libCruiseManager.la libThrottle.la

Я получил сообщение об ошибке:

libtool: link: ranlib .libs/libSpeedGauge.a
libtool: link: ( cd ".libs" && rm -f "libSpeedGauge.la" && ln -s "../libSpeedGauge.la" "libSpeedGauge.la" )
make[2]: *** No rule to make target `libCruiseManager.lo', needed by `libCruiseManager.la'.  Stop.
make[2]: Leaving directory `/home/mjaa001/Desktop/cruisecontrol/src'
make[1]: *** [all-recursive] Error 1

Кажется, он не можетсвязать код компиляции.Я неправильно указал класс lib или мне нужен только один файл класса?

Обновить

Решить, отредактировав makefile.am с

libSpeedGauge_la_SOURCES = SpeedGauge.c SpeedGauge.h CruiseManager.c CruiseManager.h Throttle.c Throttle.h

до

libSpeedGauge_la_SOURCES = SpeedGauge.c SpeedGauge.h
libCruiseManager_la_SOURCES = CruiseManager.c CruiseManager.h
libThrottle_la_SOURCES = Throttle.c Throttle.h

Ответы [ 2 ]

3 голосов
/ 15 февраля 2011
lib_LTLIBRARIES = libSpeedGauge.la libCruiseManager.la libThrottle.la

libCruiseManager_la_SOURCES = ...

или

## Process this file with automake to produce Makefile.in

lib_LTLIBRARIES = libSpeedGauge.la
libSpeedGauge_la_SOURCES = SpeedGauge.c CruiseManager.c Throttle.c

bin_PROGRAMS = main
main_SOURCES = main.c
main_LDADD = libSpeedGauge.la
1 голос
/ 15 февраля 2011

lib_LTLIBRARIES - это библиотеки, которые должны быть собраны Automake (вместе с libtool). Вы не смогли указать libSpeedGuage_la_SOURCES. Смотрите подробности о том, как это сделать, в ответе ааа.

Если вы хотите ссылаться только на уже созданную библиотеку, используйте _LDADD (но пропустите директиву lib_LTLIBRARIES).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...