【问题标题】:possible error in make file(UBuntu)制作文件中可能出现的错误(UBuntu)
【发布时间】:2014-03-20 14:49:30
【问题描述】:
TARGETS = client server

CL_OBJ = clientMain.o Controller.o UI.o List.o Movie.o Server.o Serializer.o
SV_OBJ = serverMain.o ServerControl.o Storage.o List.o Movie.o Serializer.o

server: $(SV_OBJ) Connection.o
    g++ -o server $(SV_OBJ) Connection.o

client: $(CL_OBJ) Connection.o
    g++ -o client $(CL_OBJ) Connection.o

clientMain.o:   clientMain.cc
    g++ -c clientMain.cc

serverMain.o:   serverMain.cc
    g++ -c serverMain.cc

Controller.o:   Controller.cc Controller.h 
    g++ -c Controller.cc

UI.o:   UI.cc UI.h 
    g++ -c UI.cc

List.o: List.cc List.h
    g++ -c List.cc

Movie.o:    Movie.cc Movie.h Data.h
    g++ -c Movie.cc

Server.o:   Server.cc Server.h Movie.h Data.h
    g++ -c Server.cc

Storage.o:  Storage.cc Storage.h Movie.h Data.h
    g++ -c Storage.cc

ServerControl.o:    ServerControl.cc ServerControl.h Data.h
    g++ -c ServerControl.cc

Serializer.o:   Serializer.cc Serializer.h
    g++ -c Serializer.cc

clean:
    rm -f $(CL_OBJ) $(SV_OBJ) client server

这个 makefile 只生成服务器可执行文件而不是客户端可执行文件。它可能位于客户端目标之前的顶部,因为如果它与服务器目标切换位置,它会生成客户端文件。我不确定罪魁祸首是什么,非常感谢您的帮助。

【问题讨论】:

    标签: ubuntu makefile g++


    【解决方案1】:

    Make 总是在默认情况下构建 makefile 中的第一个目标,并且该目标。如果你运行make client,它将构建client

    或者您可以引入一个新目标作为第一个目标,这取决于您通常要构建的目标;在你的server 目标之前添加:

    .PHONY: all
    all: server client
    

    【讨论】:

      【解决方案2】:

      您只需要在开头添加一个虚拟目标:

      all: $(TARGETS)
      

      这将使all 在您自己键入make 时成为默认目标(即不指定目标),这将导致同时构建客户端和服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        相关资源
        最近更新 更多