2016-10-25 1 views
0

Ich bin in einer Software-Entwicklung arbeiten, in einem Modul, das eine Verzeichnisstruktur wie folgt hat:C++ Unitest Makefile Probleme

src: das Verzeichnis, in dem Sie die Quellen ablegen werden Sie arbeiten an

umfassen: das Verzeichnis, in dem Sie

lib die „.h“ Dateien ablegen werden: wird, wo die Bibliotheken

bin installiert werden: ist, wo die Binärdateien

installiert werden

idl: ist für die Interface Definition Language-Dateien

Objekt: ist, wo die Dateien Abhängigkeiten erhalten installiert

Test (wenn „macht all“ läuft): ist, wo der Test Quellcode setzt

werden muss

Jetzt versuche ich, Test zu machen, aber ich habe einige Probleme mit diesem Makefile

Ich habe eine test/Dummy.cpp Datei, die ein Dummy-Server ist, der auf einem bestimmten Port zuhören und eine bestimmte Anfragen beantworten kann, Es gibt eine Dienstprogrammklasse VendorServerSocket, die das grundlegende co implementiert Kommunikationsmethoden. Aber ich bin mir nicht sicher, wie diese Klasse im Makefile implementieren (nicht deklariert), , also wenn es den VendorServerScoket aufrufen, diesen Fehler anzeigen.

CVRDummy.cpp:39: error: ‘VendorServerSocket’ was not declared in this scope 
make: *** [test] Error 1 

ich nicht viel Erfahrung in der Softwareentwicklung haben bin ich nur zu lernen, werde ich wie wissen, wie ich diese Klasse in meinem Make-Datei aufnehmen kann, hoffen, dass Sie mir helfen können.

Dies ist die Make-Datei, die ich verwende:

MODULE_NAME = GenericEth 



EXECUTABLES_L = Agilent_lanio $(MODULE_NAME)Dummy 

$(MODULE_NAME)Dummy_OBJECTS = $(MODULE_NAME)Dummy 
$(MODULE_NAME)Dummy_LIBS = $(MODULE_NAME)Eth 

Agilent_lanio_OBJECTS = Agilent_lanio 
Agilent_lanio_LDFLAGS = -lc 

# 
# list of all possible C-sources (used to create automatic dependencies) 
# ------------------------------ 
CSOURCENAMES = \ 
    $(foreach exe, $(EXECUTABLES) $(EXECUTABLES_L), $($(exe)_OBJECTS)) \ 
    $(foreach rtos, $(RTAI_MODULES) , $($(rtos)_OBJECTS)) \ 
    $(foreach lib, $(LIBRARIES) $(LIBRARIES_L), $($(lib)_OBJECTS)) 


#>>>>> END OF standard rules 

# 
# INCLUDE STANDARDS 
# ----------------- 

MAKEDIRTMP := $(shell searchFile include/acsMakefile) 
ifneq ($(MAKEDIRTMP),\#error\#) 
    MAKEDIR := $(MAKEDIRTMP)/include 
    include $(MAKEDIR)/acsMakefile 
endif 

# 
# TARGETS 
# ------- 
all: do_all 
    @echo " . . . 'all' done" 

clean: clean_all 
    $(RM) *~ tatlogs sed.scan tmp .TestList.sed .testSession .purify 
    @echo " . . . clean done" 

clean_dist: clean clean_dist_all 
    @echo " . . . clean_dist done" 

man: do_man 
    @echo " . . . man page(s) done" 

install: install_all 
    @echo " . . . installation done" 

Antwort

0

Sie haben die Header-Datei VendorServerSocket oben enthält entweder CVRDummy.cpp oder CVRDummy.hpp aufzunehmen.

Der Compiler gibt einen anderen Fehler in der Zeile #include "xxx.h" aus, wenn "xxx.h" während der Kompilierzeit nicht gefunden wird. (Unter der Annahme xxx.h enthält die Deklaration VendorServerSocket.

Wenn Sie die Datei korrekt sind, einschließlich, dann besteht die Möglichkeit, dass VendorServerSocket in einigen Namespace deklariert ist. Sie müssen für den Zugriff korrekt Bereichsauflösungsoperator.