Makefile不检测文件夹中的文件
我在AIX环境中编译这个makefile时遇到了严重的问题 文件夹结构如下所示(使用此处答案之一中提供的命令:Makefile不检测文件夹中的文件,makefile,aix,Makefile,Aix,我在AIX环境中编译这个makefile时遇到了严重的问题 文件夹结构如下所示(使用此处答案之一中提供的命令:find.|sed-e“s/[^-][^\/]*\/|/g“-e”s/|\([^]\)/|-\1/“): 我正在尝试使用以下生成文件编译此结构: .SUFFIXES: .DEFAULT: CC = xlc_r CFLAGSD = -g CFLAGS = -Wall CDEF = LOADOPTS = BIN_DIR = bin/ OBJ_DIR = ob
find.|sed-e“s/[^-][^\/]*\/|/g“-e”s/|\([^]\)/|-\1/“
):
我正在尝试使用以下生成文件编译此结构:
.SUFFIXES:
.DEFAULT:
CC = xlc_r
CFLAGSD = -g
CFLAGS = -Wall
CDEF =
LOADOPTS =
BIN_DIR = bin/
OBJ_DIR = obj/
SRC_DIR = src/
LIB_DIR = lib/
INC_DIR = include/
INC_BASE = -I./$(INC_DIR)
INC_SOURCE = -I./$(SRC_DIR)
INC_ALL = $(INC_BASE) $(INC_SOURCE)
# Libraries packed in macros
LIB_BASE = -L./$(LIB_DIR)
LIB_MATH = -lm
LIB_ALL = -lrt $(LIB_BASE)
# Libraries needed by the different programs and their respective names
LIB_PROGRAM_01 = $(LIB_ALL)
PROGRAM_NAME_01 = main
.PHONY: all
all: $(PROGRAM_NAME_01) \
execute \
$(OBJ_DIR)%.o: $(SRC_DIR)%.c
# --- Compiling $< ---
# $(CC) $(CFLAGSD) $(INC_ALL) -c $(SRC_DIR)$< -o $(OBJ_DIR)$@
create_directories:
if [ ! -d ./$(BIN_DIR) ]; then mkdir -p ./$(BIN_DIR);fi
if [ ! -d ./$(OBJ_DIR) ]; then mkdir -p ./$(OBJ_DIR);fi
execute: $(PROGRAM_NAME_01)
# --- Execute $< ---
# ./$(BIN_DIR)$<
$(PROGRAM_NAME_01): $(OBJ_DIR)main.o
# --- Linking $< ---
# $(CC) $(CDEF) $^ -o $(BIN_DIR)$@ $(INC_ALL) $(LIB_PROGRAM_01)
cleanobj:
# --- Clean all objects ---
# rm -f $(OBJ_DIR)*.o
clean:
# --- Clean all objects and the bin dir too ---
# rm -f $(OBJ_DIR)*.o $(BIN_DIR)*
allc: all \
cleanobj
Debug: all
Release: all
default: all
但是,如果我尝试用Cygwin或Debian进行编译,它是有效的
我试图调用make-r-d
查看所有的内部和调试simbol,但它从未远程引用任何与src/main.c
文件相近的内容
使用-d,makefile将显示以下内容:
#
# Files that are only sources:
# src/%.c [src/%.c]
# obj/main.o [obj/main.o]
#*** Internal (default) Variables:
#*** Global Variables:
aix中make的版本是:
1.1.1.3
使用命令grep bos/usr/ccs/lib/aix.mk
您的make文件是GNU make文件,但您的aixmake
程序不是GNU make
和。Cygwin或Debian中的make
程序是GNU make。
.我应该做些什么来让AIX理解它呢
make
?@JoséManuelRamos您需要让它遵守。请参阅扩展说明。最重要的是,将GNU生成模式规则(%
-rules)替换为。后缀:
规则。也许正是你需要的。
make: 1254-002 Cannot find a rule to create target obj/main.o from dependencies.
#
# Files that are only sources:
# src/%.c [src/%.c]
# obj/main.o [obj/main.o]
#*** Internal (default) Variables:
#*** Global Variables: