C++ 在makefile中使用ifeq编译C或CPP文件
我想将C++ 在makefile中使用ifeq编译C或CPP文件,c++,makefile,emscripten,C++,Makefile,Emscripten,我想将src/目录中的所有文件编译到bc/%.bc 因为我使用了std=c++17标志,而这些标志不能与.c文件一起使用,所以我尝试了以下方法: bc/%.bc: src/%.* ifeq '$(suffix $^)' '.c' emcc $^ -o $@ else em++ $^ -o $@ -std=c++17 endif 但是它不起作用,条件ifeq总是false(当我用'.cpp'替换'.c'时也是如此) 有没有一种方法可以实现基
src/
目录中的所有文件编译到bc/%.bc
因为我使用了
std=c++17
标志,而这些标志不能与.c
文件一起使用,所以我尝试了以下方法:
bc/%.bc: src/%.*
ifeq '$(suffix $^)' '.c'
emcc $^ -o $@
else
em++ $^ -o $@ -std=c++17
endif
但是它不起作用,条件ifeq
总是false(当我用'.cpp'
替换'.c'
时也是如此)
有没有一种方法可以实现基于文件后缀的单独编译?有多种方法。最好是将规则分为两个规则,一个用于
.c
,另一个用于.cpp
:
bc/%.bc: src/%.c
emcc $< -o $@
bc/%.bc: src/%.cpp
em++ $^ -o $@ -std=c++17
以及构建所有内容的默认规则:
$(TARGETS):
做这件事的方法不止一种。最好是将规则分为两个规则,一个用于
.c
,另一个用于.cpp
:
bc/%.bc: src/%.c
emcc $< -o $@
bc/%.bc: src/%.cpp
em++ $^ -o $@ -std=c++17
以及构建所有内容的默认规则:
$(TARGETS):