当前位置:  技术问答>linux和unix

makefile,因为宏定义函数无法自动检测改变的情况.

    来源: 互联网  发布时间:2016-08-19

    本文导语:  不知道是我操作有问题还是makefile的bug,现在拿来大家一起看下这问题,大家也可以测试下: 1.首先我们准备三个测试文件,我把代码贴出来: test.h #define LOG_TYPE 2                                       ...

不知道是我操作有问题还是makefile的bug,现在拿来大家一起看下这问题,大家也可以测试下:

1.首先我们准备三个测试文件,我把代码贴出来:
test.h
#define LOG_TYPE 2                                              //输出类型设置
#if(LOG_TYPE == 1)                                              //1是输出到标准输出口
#define PRINTF(fmt, args ...) printf(fmt, ##args)
#endif
#if(LOG_TYPE == 2)                                              //2忽略调试信息输出
#define PRINTF(fmt, args ...)
#endif
void test(void);
void test2(void);

test.c
#include 
#include "test.h"

#if(LOG_TYPE == 1)                                              
#define LOG_F(fmt, args ...) printf(fmt, ##args)
#endif

#if(LOG_TYPE == 2)                                              
#define LOG_F(fmt, args ...)
#endif

void test(void)
{
PRINTF("test PF  n");
LOG_F("test LOG_F  n");
}

void test2(void)
{
     #if(LOG_TYPE == 1)   
printf("test2 n");
     #endif
     #if(LOG_TYPE == 2)   

     #endif
}

main.c

#include 
#include "test.h"

int main(void)
{
PRINTF("main !!n");
test();
test2();
}

Makefile 
all:test
test:test.o main.o
gcc  -o test test.o main.o

test.o:test.c  test.h             
         gcc -c test.c -o test.o

main.o:main.c              
gcc -c main.c -o main.o

clean:
rm -f test.o main.o test


现在我们操作test.h文件中的宏LOG_TYPE:
1.设置LOG_TYPE = 1->make->./test  输出:
  main !!
  test PF  
  test LOG_F  
  test2
 
2.设置LOG_TYPE = 2->make->./test  输出: 
   main !!


注意按道理来说我们设置LOG_TYPE = 2就不应该在有输出main!!!的.

这说明函数连接的还是连接到上一个版本的test.o文件,这里为什么没有连接到最新的.o文件谁能分析下吗?

除非你全部make clean在make才不会发生这样的情况.

|

|
但还有一个错误就是单独执行make depend
会出现一个错误:make: Nothing to be done for `depend'.
-----------------------------
我不是很会makefile  这个不能算是错误吧
你去下载任意一个软件  直接就来一句make depend   也会出错的
make: *** ターゲット `depend' を make するルールがありません.  中止.

    
 
 

您可能感兴趣的文章:

  • 函数互相调用时Makefile编写
  • 怎样修改makefile中的导出函数
  • 有关在makefile中使用shell函数的问题
  • 求救!makefile 中shell函数
  • 刚学LINUX,makefile使用函数报错
  • Makefile中的一句不明白,关于shell中sed函数
  • 为何这个makefile不会出现没有main函数的报错
  • 急!同一个c文件里vfork();pthread_create();两个函数,Makefile该怎么写?谢谢
  • Makefile找不到 库 中的函数名
  • Makefile 中 shell 函数的一个问题
  • 关于makefile的问题:如果一个目标的两个以上的依赖文件都需要引用相同的库函数该怎么写?
  • 如何在Makefile中定义宏进行条件编译?
  • Makefile中的变量先使用后定义的问题
  • make命令可以在命令行中重新定义一个macro,用来覆盖makefile中的macro吗?
  • VC中的预处理程序定义 在makefile中如何表达啊?(望高手指点)
  • makefile 中定义的 -D_LINUX_和 LINUX有区别吗?
  • Makefile,如何传递宏定义DEBUG?以便于程序编译或者跳过程序中#ifdef DEBUG中间的代码段?
  • makefile 里CFLAGS := -Wall -O2 怎样使用的;RM在哪里定义
  • makefile的问题,找不到main的定义,写错了??
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • jquery iis7站长之家
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3