c ++ uniTest Makefile问题

时间:2016-10-25 15:01:39

标签: c++ c linux makefile

我正在进行软件开发,在一个具有如下目录结构的模块中:

src:您将放置正在使用的源的目录

include:是您放置“.h”文件的目录

lib:是安装库的地方

bin:是安装二进制文件的地方

idl:用于接口定义语言文件

object:安装依赖项文件的位置(运行“make all”时)

test:是必须放置测试源代码的地方

现在我正在尝试进行测试,但这个makefile存在一些问题

我有一个test / Dummy.cpp文件,它是一个虚拟服务器,可以侦听特定端口并回复特定请求,还有一个实用程序类VendorServerSocket,它实现了基本的通信方法。 但是我不确定如何在makefile中实现这个类(没有声明), 因此,当它调用VendorServerScoket时会显示此错误。

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

我没有太多的软件开发经验我只是在学习,我想知道如何在makefile中加入这个类,  希望你能帮助我。

这是我正在使用的makefile:

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"

1 个答案:

答案 0 :(得分:0)

您必须在VendorServerSocketCVRDummy.cpp之上加载包含CVRDummy.hpp的标题文件。

编译器在#include "xxx.h"行发出不同的错误,如果在编译期间找不到“xxx.h”。 (假设xxx.h包含VendorServerSocket的声明。

如果正确包含文件,则有可能在某个命名空间中声明VendorServerSocket。您需要使用范围解析运算符正确访问它。