2015-03-07 1 views
0

J'essaie d'apprendre automake (Autotools de John Calcotte) et je suis tombé sur la création d'un programme de vérification pour tester ma bibliothèque C++. Une liste partielle du programme est donnée ci-dessous. L'exemple dans le texte montre la création d'un programme de test en utilisant un script shell testant la sortie du programme de test. J'ai un programme, lié à la bibliothèque, qui, lorsqu'il est exécuté, teste la fonctionnalité de la bibliothèque. Dois-je créer le programme de test en utilisant noinst et ensuite exécuter en utilisant un script shell? Tous les exemples de script ou références à des exemples seraient utiles.Problème lors de la création d'un programme de vérification dans automake

Merci

The errors are: 

    src/Makefile.am:27: warning: variable 'check_SOURCES' is defined but no program or 
    src/Makefile.am:27: library has 'check' as canonical name (possible typo) 


# Create a library 
    lib_LIBRARIES  = libslip.a 
    libslip_a_SOURCES = $(sources) $(privateHeaders) 


# Header files for testing SLIP 

    testHead=TestGlobal.h TestHeader.hp TestIO.h TestMisc.h TestOperators.h TestReader.h TestReplace.h TestSequencer.h TestUtilities.h 


# Source files for testing SLIP 

    testCPP=Test.cpp TestGlobal.cpp TestHeader.cpp TestIO.cpp TestMisc.cpp TestOperators.cpp TestReader.cpp TestReplace.cpp TestSequencer.cpp TestUtilities.cpp 


# Test Program 
    check_PROGRAMS = Test 
    check_SOURCES = $(testHead) $(testCPP) 
    TESTS   = $(check_PROGRAMS) 

Répondre

0

Il est juste un léger malentendu: check_PROGRAMS = Test est très bien, mais tout comme avec les libslip sources, Test est utilisé comme préfixe:

Test_SOURCES = TestGlobal.h TestHeader.hp TestIO.h TestMisc.h TestOperators.h \ 
     TestReader.h TestReplace.h TestSequencer.h TestUtilities.h Test.cpp \ 
     TestGlobal.cpp TestHeader.cpp TestIO.cpp TestMisc.cpp TestOperators.cpp \ 
     TestReader.cpp TestReplace.cpp TestSequencer.cpp TestUtilities.cpp 

Dans ce cas, il est bien pour inclure les en-têtes dans SOURCES. Chaque nouvelle ligne après le saut de ligne doit commencer par un caractère TAB. Bien sûr, vous pouvez continuer à utiliser les variables $(testHead) et $(testCPP) si vous préférez. Pour créer un lien avec libslip:

Test_LDADD = libslip.a 

ou simplement:

LDADD = libslip.a 

se liant libslip avec tous les programmes dans ce Makefile. check_PROGRAMS cibles sont implicitement noinst.

Vous pouvez également trouver le Autotools Mythbuster une ressource utile.

+0

modifié src/Makefile.am est: # Test SLIP testdir = ./test check_PROGRAMS = test test_SOURCES = $ (testCPP) $ (testHead) test_LDADD = libslip.a ESSAIS = $ (check_PROGRAMS CLEANFILES = $ (testdir) La compilation est réussie mais la liaison n'est pas effectuée. g ++: avertissement: Test.o: fichier d'entrée de l'éditeur de liens non utilisé car la liaison n'est pas fait pour chaque fichier source. . –

+0

@ArthurSchwarez - peut-être pourriez-vous éditer/formater votre question. Ce serait plus facile à comprendre qu'un mur de texte sans balisage. –

+0

J'ai dépassé le point initial. J'essaie maintenant de lier mes résultats de test à * l'un des cadres d'automake et de nettoyer mes fichiers correctement (en utilisant CLEANFILES). Mon programme de test est exécuté et fonctionne correctement. Mon fichier test.trs est remplacé par le framework et mon fichier test.log n'est pas copié dans les résultats de test. Je lis (encore) le manuel d'automake pour voir si cela a du sens et j'ai lu le livre de John Calcote - pas d'aide. J'ai regardé un Autotools Mythbusters mais rien ne me frappe comme adressant le cadre de test d'automake. L'aide est sympa. –