在生成文件中使用 ifeq 编译 C 或 CPP 文件
Using ifeq in makefile to compile either C or CPP file
我想将目录中的所有文件编译src/
以bc/%.bc
.
因为我使用了不能与.c
文件一起使用的std=c++17
标志,所以我尝试了这个:
bc/%.bc: src/%.*
ifeq '$(suffix $^)' '.c'
emcc $^ -o $@
else
em++ $^ -o $@ -std=c++17
endif
但它不起作用,条件ifeq
总是假的(当我用'.cpp'
替换'.c'
时也是如此(。
有没有办法实现基于文件后缀的单独编译?
有不止一种方法可以做到这一点。最好的办法可能是将规则分成两个规则,一个用于.c
,一个用于.cpp
:
bc/%.bc: src/%.c
emcc $< -o $@
bc/%.bc: src/%.cpp
em++ $^ -o $@ -std=c++17
然后,您需要一种方法来构建所需文件的列表。(无论如何,您都需要这个,因为该src/%.*
并不像您想象的那样工作。
SRC_FILES := $(wildcard src/%.*)
TARTGETS := $(patsubst src/%, bc/%.bc, $(basename $(SRC_FILES)))
以及构建所有内容的默认规则:
$(TARGETS):
相关文章:
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 无论如何可以将webm / mp4文件编译/记忆为.exe程序吗?(C++)
- 从生成文件编译错误:"Unable to open output file" ..."No such file or directory"
- 如何使用 GLFW 预编译的二进制文件编译 Visual Studio 2019 发布版本
- Arduino IDE中自定义库类的.h文件编译错误的原因是什么
- makefile和错误将与大型项目分开的文件编译
- 如何使用生成文件编译具有多个目录的 c++ 项目
- 我可以将Visual Studio 2015头文件编译成dll并在VS2013中使用它吗?
- 使用Bazel将C 文件编译为python.h
- 使用 .a 文件编译简单的C++文件
- OpenCV 3.2 文件编译
- 如何从多个 cpp 文件编译 WebAssembly
- 从多个文件编译可以"undefined reference"
- 使用静态依赖性为共享二进制文件编译语法需要更加清晰
- 将Gsoap Src文件编译到我的项目中
- 如何用多个文件编译make下的dlib
- 字段的类型不完整,从多个文件编译
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- OpenGLES 标头(包括 Availability.h)可防止 CPP 文件编译