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

我在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  = 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文件,但您的aix
make
程序不是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: