繁体   English   中英

make:***没有规则来创建目标“ gcc”,这是“ Employee.o”所需要的。 停止

[英]make: *** No rule to make target `gcc', needed by `Employee.o'. Stop

我对makefile很陌生。 您能否帮助我更正以下makefile:

我创建了一个Employee类。 经理类派生自Employee类。 Link类同时引用了Employee和Manager类。

错误:

  make: *** No rule to make target `gcc', needed by `Employee.o'.  Stop.

生成文件:

  CC = gcc
  TOP=/usr/local/share/cimple
  ROOT= $(PEGASUS_ROOT)
  ##BINDIR= ${PEGASUS_HOME}/bld/bin
  TARGET = ${PEGASUS_HOME}/lib/libEmployee.so
  LIBRARY_FLAGS = -L${PEGASUS_HOME}/lib
  ##PROVIDERROOT = $(PEGASUS_ROOT)/../providers
  INSTANCE_PROVIDER_OBJECTS = Employee.o Manager.o Link.o module.o repository.o Employee_Provider.o Manager_Provider.o Link_Provider.o

  COMPILE_FLAGS = -W -Wall -g -fPIC
  LINK_FLAGS = -W -Wall -g -shared
  EXTRA_INCLUDES = -I$(PROVIDERROOT) -I${PEGASUS_ROOT}/src

  LIBRARIES = pegcommon pegprovider
  DYNAMIC_LIBRARIES = -lpegcommon -lpegprovider


  include $(TOP)/mak/config.mak

  MODULE=1
  SHARED_LIBRARY=Employee

  ##
  ## Define source files for compile and link
  ##

  SOURCES += Employee.cpp
  SOURCES += Manager.cpp
  SOURCES += Link.cpp
  SOURCES += module.cpp
  SOURCES += repository.cpp
  SOURCES += Employee_Provider.cpp
  SOURCES += Manager_Provider.cpp
  SOURCES += Link_Provider.cpp

  ##
  ## Module defined as Pegasus C++ interface
  ##
  CIMPLE_PEGASUS_MODULE=1
  DEFINES += -DCIMPLE_PEGASUS_MODULE

  LIBRARIES += cimplepegadap
  LIBRARIES += cimple

  include $(TOP)/mak/rules.mak


  ${TARGET} : ${INSTANCE_PROVIDER_OBJECTS} Makefile ${CC} ${LINK_FLAGS}   ${LIBRARY_FLAGS} -o ${TARGET} ${INSTANCE_PROVIDER_OBJECTS} ${DYNAMIC_LIBRARIES}


  Employee.o : Employee.cpp Makefile Employee.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Employee.cpp

  Manager.o : Manager.cpp Makefile Manager.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Manager.cpp

  Link.o : Link.cpp Makefile Link.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Link.cpp

  repository.o : repository.cpp Makefile repository.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c repository.cpp

  module.o : module.cpp Makefile module.h ${CC} -DCIMPLE_PEGASUS_MODULE ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c module.cpp

  Employee_Provider.o : Employee_Provider.cpp Makefile Employee_Provider.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Employee_Provider.cpp

  Manager_Provider.o : Manager_Provider.cpp Makefile Manager_Provider.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Manager_Provider.cpp

  Link_Provider.o : Link_Provider.cpp Makefile Link_Provider.h ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Link_Provider.cpp

我收到上述错误。任何帮助将不胜感激! 提前致谢!

更正makefile,使其在实际创建目标的命令之前包含“ Enter”和“ Tab”字符,例如,对于Employee.o如下所示:

Employee.o : Employee.cpp Makefile Employee.h<ENTER>
<TAB> ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c Employee.cpp

Makefile目标的一般语法为:

targetname: dependencies <ENTER>
<TAB>command to build targetname

参见例如此处以获得更详细的解释: http : //mrbook.org/tutorials/make/

GNU Make工具需要列表以将某些文本视为配方。 此外,您可能对模式规则感兴趣。 您可以将所有* .o生成规则替换为通用规则(基于模式匹配):

%.o: %.cpp %.h
    ${CC} ${COMPILE_FLAGS} ${EXTRA_INCLUDES} -c $@

此规则将从相应的源/头文件生成任何* .o文件。 易于维护! 请注意${CC}...之前的tab ${CC}...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM