加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使预处理器定义具有文件敏感性

发布时间:2020-12-16 09:38:48 所属栏目:百科 来源:网络整理
导读:我写了一个make文件. 在make文件中我使用了一个变量,比如EXTRAFLAGS,看起来像这样. EXTRAFLAGS += -D _MSC_VEREXTRAFLAGS += -D BINARYINPUTEXTRAFLAGS += -D ENABLEVERSION2D2 进一步, 我使用编译器标志 CFLAGS = -Werror -Wall -I $(INC) $(EXTRAFLAGS) 和
我写了一个make文件.

在make文件中我使用了一个变量,比如EXTRAFLAGS,看起来像这样.

EXTRAFLAGS += -D _MSC_VER
EXTRAFLAGS += -D BINARYINPUT
EXTRAFLAGS += -D ENABLEVERSION2D2

进一步,
我使用编译器标志

CFLAGS = -Werror -Wall -I $(INC) $(EXTRAFLAGS)

mingw32-gcc $(CFLAGS) -o nameofexe  OBJ's

我已经使用这个makefile解决了任何问题.但是当我禁用预处理程序定义时,通过在EXTRAFLAGS中的一个语句之前引入“#”,并且我重新制作它,我的目标是最新的.我无法将预处理器定义引入敏感列表.

我正在使用的临时工作是,介绍一个虚假目标清理并删除所有目标文件并重新编译每件事.但这是浪费时间.我怎样才能更好地管理当前的情况?

解决方法

Make是一个工具,可以在项目中的某个文件发生更改时编译项目.

例如.当您更改.h文件时,它会识别更改并重建依赖于它的所有文件,然后重建所有依赖于新版本的文件,…

但是当您更改编译器标志和/或makefile中的定义时,项目输入文件不会更改,因此项目不会重建.

有三种方法可以实现您的需求:首先在更改makefile后手动清理make.其次要在makefile中包含makefile本身(并在更改时发出make clean).最后将定义移动到某个项目特定的.h文件中.

通常只有“自己在文件中”的解决方案是唯一一个避免构建所有新内容的解决方案,因为其他人不知道哪些源文件实际上引用了已更改的定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读