Makefile如何傳遞宏定義
用個簡單的例子說明:
Makefile文件:
CROSS =
CC = $(CROSS)gcc
AA = DEF1
BB = TEMP3
DD = TEMP1
all: hello
hello:hello.c
gcc -o $@ $^ -D $(AA) -D$(BB) -D TEMP1=/"2.6.2/"
clean:
rm -rf hello *.o
hello.c文件
#include <stdio.h>
/*好用的寫法
#ifdef DEF1
#if CC
#define TT 1
#else
#define TT 2
#endif
#elif DEF2
#define TT 3
#endif
*/
#ifdef DEF1
#define TT 1
#elif DEF2
#ifndef TEMP3
#define TT 2
#else
#define TT 3
#endif
#endif
//#define TEMP1 "2.6.2"
//#define TEMP2 "SCADA" TEMP1
//#define TEMP2 "SCADA"
//#define TEMP3 "2.6.2"
/*好用的寫法
#ifdef DEF1
int aa =1;
#elif DEF2
//int aa =2;
#ifndef CC
int aa =3;
#else
int aa =4;
#endif
#endif
*/
int main (int argc,char *argv[])
{
//int i = TEMP1;
char a[200+1] ="";
//i = TT;
//printf("%d/n",i);
//printf("%d/n",aa);
//printf("%s%02f%s/n",TEMP2,TEMP1,"tar.gz");
printf("%s/n",TEMP3);
printf("%s/n",TEMP1);
//snprintf(a,200,"%d",TEMP1);
//printf("%s/n",TEMP1);
return 0;
}
然後
make "AA=DEF1" "BB=DEF2" "DD=TEMP3"
Makefile文件:
CROSS =
CC = $(CROSS)gcc
AA = DEF1
BB = TEMP3
DD = TEMP1
all: hello
hello:hello.c
gcc -o $@ $^ -D $(AA) -D$(BB) -D TEMP1=/"2.6.2/"
clean:
rm -rf hello *.o
hello.c文件
#include <stdio.h>
/*好用的寫法
#ifdef DEF1
#if CC
#define TT 1
#else
#define TT 2
#endif
#elif DEF2
#define TT 3
#endif
*/
#ifdef DEF1
#define TT 1
#elif DEF2
#ifndef TEMP3
#define TT 2
#else
#define TT 3
#endif
#endif
//#define TEMP1 "2.6.2"
//#define TEMP2 "SCADA" TEMP1
//#define TEMP2 "SCADA"
//#define TEMP3 "2.6.2"
/*好用的寫法
#ifdef DEF1
int aa =1;
#elif DEF2
//int aa =2;
#ifndef CC
int aa =3;
#else
int aa =4;
#endif
#endif
*/
int main (int argc,char *argv[])
{
//int i = TEMP1;
char a[200+1] ="";
//i = TT;
//printf("%d/n",i);
//printf("%d/n",aa);
//printf("%s%02f%s/n",TEMP2,TEMP1,"tar.gz");
printf("%s/n",TEMP3);
printf("%s/n",TEMP1);
//snprintf(a,200,"%d",TEMP1);
//printf("%s/n",TEMP1);
return 0;
}
然後
make "AA=DEF1" "BB=DEF2" "DD=TEMP3"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.