c++ uniTest Makefile 问题
Posted
技术标签:
【中文标题】c++ uniTest Makefile 问题【英文标题】:c++ uniTest Makefile problems 【发布时间】:2016-10-25 15:01:38 【问题描述】:我正在从事软件开发,在一个具有如下目录结构的模块中:
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】:您必须在CVRDummy.cpp
或CVRDummy.hpp
之上包含包含VendorServerSocket
的头文件。
如果在编译期间未找到“xxx.h”,编译器会在 #include "xxx.h"
行上发出不同的错误。 (假设xxx.h
包含VendorServerSocket
的声明。
如果您正确地包含文件,那么VendorServerSocket
可能会在某个命名空间中声明。您需要使用范围解析运算符正确访问它。
【讨论】:
以上是关于c++ uniTest Makefile 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何将 C makefile 移植到 C++ makefile?
使用 Makefile.am/Makefile.in 在 Ubuntu Linux 中构建 c++ 项目