相关疑难解决方法(0)

在make文件中指定构建目录

我对手工制作的make文件比较新.我已经整理了一个用于构建库的基本make文件.我想将所有临时.o文件保存在构建目录中,并将构建的可执行文件存储在bin目录中.

我的目录结构如下所示:

root
   src/
   include/
   build/
   bin/
   Makefile
Run Code Online (Sandbox Code Playgroud)

这就是我的make文件的样子:

SHLIB = pg_extlib

SRC =  src/file1.c \
       src/file2.c

OBJS = build/file1.o \
       build/file2.o

debug_build:
    gcc -g -fPIC -c $(SRC) -I`pg_config --includedir` -I`pg_config --includedir-server` -I/some/required/path/include -Iinclude
    gcc -shared -o bin/$(SHLIB).so $(OBJS) -lm -lpq -lmylib_core


clean:
    rm -f $(SHLIB) $(OBJS) 
Run Code Online (Sandbox Code Playgroud)

.o文件正确放置在构建文件夹中,但它们也出现在根文件夹中(Makefile所在的位置).我该如何解决?

gcc makefile

4
推荐指数
1
解决办法
1万
查看次数

如何使用makefile将.o和.exe文件放在/ build /目录中

我很难找到关于makefiles的任何信息,这是真正的初学者级别.即使是问题,这里的问题也是使用一些我不理解的符号来呈现的$(CC) $(INC) $< $(CFLAGS) -o $(BIN)$@ $(LIBS).那让我失望了.

我的makefile看起来像这样:

cpptest: main.o
    g++ -o cpptest main.o

main.o: main.cpp
    g++ -c main.cpp

clean:
    rm cpptest main.o
Run Code Online (Sandbox Code Playgroud)

这是我知道如何处理makefile的全部限制.它可以工作,但将main.o和cpptest.exe文件放入项目根目录.

我想将main.o文件和cpptest.exe文件放入/ build /目录.但是,如果我./build/在每个main.o和每个cpptest之前放置,则目标文件将出现在项目根目录中,并且exe文件根本不会出现.

我正在使用Windows上的Sublime Text 3来构建这个东西,这是值得的.

makefile g++

3
推荐指数
1
解决办法
331
查看次数

Makefile可以编译所有.c文件而无需指定它们

我正在尝试创建一个Makefile,它.c可以编译所有文件而无需在Makefile中每行添加文件名行.我认为这与makefile非常相似- 一次编译所有c文件.这就是我想要做的事情:

1 - 验证是否所有.c文件都来自/src其各自的.o文件/obj.如果该.o文件不存在,请从该.c文件构建它;

2 - main.exe从所有编译.o并打开它/bin.

我的Makefile:

BIN     = ./bin
OBJ     = ./obj
INCLUDE = ./include
SRC     = ./src

all:
    gcc -c "$(SRC)/Distances.c" -o "$(OBJ)/Distances.o"
    gcc -c "$(SRC)/HandleArrays.c" -o "$(OBJ)/HandleArrays.o"
    gcc -c "$(SRC)/HandleFiles.c" -o "$(OBJ)/HandleFiles.o"
    gcc -c "$(SRC)/Classifier.c" -o "$(OBJ)/Classifier.o"
    gcc -c main.c -o "$(OBJ)/main.o"
    gcc -o $(BIN)/main.exe $(OBJ)/*.o -lm

run:
    $(BIN)/main.exe

clean:
    del /F …
Run Code Online (Sandbox Code Playgroud)

c makefile

0
推荐指数
2
解决办法
1286
查看次数

标签 统计

makefile ×3

c ×1

g++ ×1

gcc ×1