【发布时间】:2021-10-22 12:00:04
【问题描述】:
我正在维护一个包含数百个 C 和 C++ 文件的跨平台项目 (Linux/Windows/32/64)。为此,我使用了一个使用 GNU Make 的 makefile。 当我在 Windows 中编译时会出现我的问题,因为 Visual Studio (cl) 编译器强制我通过调用 vcvarsall.bat [platform_type] 来设置环境,并且每次编译一个文件时都会执行这个过程,而整个过程在时间。
部分生成文件
# C object file generation rule
../int/$(PROJECT)/%.o: ../%.c
ifeq ($(OS),Windows_NT)
@vcvarsall.bat x86 & cl $(CFLAGS) -c $(subst /,\,$<)
else
@gcc $(CFLAGS) -c $<
endif
每当编译每个文件时都会执行语句@vcvarsall.bat x86。有没有办法让这条语句只执行一次,并且所有后续的 shell 都继承这个?
谢谢!
【问题讨论】: