C++ 通过ocaml和cpp扩展名生成文件
我在同一个目录中有大量的C++ 通过ocaml和cpp扩展名生成文件,c++,makefile,C++,Makefile,我在同一个目录中有大量的.ml和.cpp文件,它们彼此完全独立。是否有任何方法可以使用Makefile编译它们而不使用外部bash/shell脚本 CC=g++ CFLAGS=-Wall -std=c++14 -Wno-unused-variable CCML=ocamlc SHELL := '/bin/bash' .SUFFIXES = .cpp .ml cpp_objs:=$(wildcard *.cpp) ml_objs:=$(wildcard *.ml) cpp_targets:=$(
.ml
和.cpp
文件,它们彼此完全独立。是否有任何方法可以使用Makefile
编译它们而不使用外部bash/shell脚本
CC=g++
CFLAGS=-Wall -std=c++14 -Wno-unused-variable
CCML=ocamlc
SHELL := '/bin/bash'
.SUFFIXES = .cpp .ml
cpp_objs:=$(wildcard *.cpp)
ml_objs:=$(wildcard *.ml)
cpp_targets:=$(cpp_objs:.cpp= )
ml_targets:=$(ml_objs:.ml= )
targets:=$(cpp_targets) $(ml_targets)
.PHONY:all
all: $(targets)
# all: $(cpp_targets)
.ml:
$(CCML) -o $@ $<
.cpp:
$(CC) $(CFLAGS) -o $@ $<
更新:所有*.ml
和*.cpp
文件在目录中都有唯一的名称
谢谢。根据您应该配置的。后缀像目标,而不是变量:
.SUFFIXES: .cpp .ml
但是,更好的方法是使用模式规则,这样就可以完全放弃使用。后缀
%: %.ml
$(CCML) -o $@ $<
%:%.ml
$(CCML)-o$@$<
根据您应该配置的。后缀类似于目标,而不是变量:
.SUFFIXES: .cpp .ml
但是,更好的方法是使用模式规则,这样就可以完全放弃使用。后缀
%: %.ml
$(CCML) -o $@ $<
%:%.ml
$(CCML)-o$@$<
make
调用与此错误对应的是什么?什么是ML-FILES
?假设我在目录中有a.ML
,它会大叫make:**没有规则将目标设为a',所有人都需要'。停止。
make
调用与此错误对应的是什么?什么是ML-FILES
?假设我在目录中有a.ML
,它会大叫make:**没有规则将目标设为a',所有人都需要'。停止。