这是一项家庭作业。我有一个makefile,默认使用编译可执行文件
gcc -o myprogram myprogram.c
在作业中,我们应该制作3个额外的制作案例:" makefile还应支持使用这3个案例make test1
,{3} make test2
{3}将睡眠时间插入到程序的3个不同指定位置{1}},make test3
。
我知道如何使用make从默认情况下有这样的额外情况,但我的问题是在编译可执行文件之前可以使用makefile将代码插入myprogram.c吗?或者我是否必须创建myprogram1.c myprogram2.c等,然后将其用于案例?
谢谢!
答案 0 :(得分:5)
一个简单的解决方案是你可以在编译时定义的宏,比如
int main(void)
{
SLEEP_HERE;
return 0;
}
并在编译时
gcc -Wall -Werror -DSLEEP_HERE='sleep(10)' -o myprogram myprogram.c
答案 1 :(得分:1)
您无需创建三个单独的文件。
在文件中创建一个宏
#ifndef DELAY_SEC
#define DELAY_SEC 0
#endif
现在在任何地方都使用宏DELAY_SEC,如果正常编译它将具有值0。
现在在目标的Makefile中,你希望延迟10秒编译为
gcc -DDELAY_SEC=10 -o myprogram myprogram.c
等等其他延迟,应该相应编译。