一组C,H文件;还有一个makefile.怎么编译呀?
makefile内容如下:
-------------------------------------------------------------------------
HFILES1 = glob.h dist.h
HFILES2 = gen.hCFILES1 =  ran1.c expdev.c gammln.c gasdev.c poidev.c dist.c
CFILES2 =  gen.c main.c command.cOBJECTS1 = ran1.o expdev.o gammln.o gasdev.o poidev.o dist.o
OBJECTS2 = gen.o main.o command.oLIBES = -lm
CC = xlC
CFLAGS = -+ -Ogen: $(OBJECTS1) $(OBJECTS2)
$(CC) $(CFLAGS) $(OBJECTS1) $(OBJECTS2) $(LIBES) -o gentest: $(OBJECTS1) test.o
$(CC) $(CFLAGS) $(OBJECTS1) test.o $(LIBES) -o testclean:
/bin/rm $(OBJECTS1) $(OBJECTS2)$(OBJECTS1): $(HFILES1)
$(OBJECTS2): $(HFILES1) $(HFILES2)
-------------------------------------------------------------------------
我把编译器改了,o改成了obj,-o改成了/out,LIBES = -lm 也改了,可是不行啊(当年编译没学好).虽然没有错误提示.可是什么文件都没产生.这个文件要怎么改才能用vc nmake呢?另:我新建了一个console工程,把所有文件都加进去了,build的时候有150多个错误啊.
都不知道我哪做错了.看了别人关于makefile的贴子,还是不知道怎么做,只好再发个贴问问大家了...谢谢!

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2452/2452336.xml?temp=.3175012
    //请看此帖子
    举个例子吧,我现在有main.c 、window.c 、model.c 、data.c 4个.c文件和window.h 、model.h 、data.h 3个.h文件。
    main.c是主程序,里面有main()函数。其他的都是模块。如果要生成最终的可执行文件,要做以下步骤:
    1、分别编译window.c 、model.c 、data.c 、main.c ,将会得到3个目标文件:window.o 、model.o 、data.o 、main.o
    2、把这4个.o (在windows下就是.obj)文件链接起来,得到main.out(在windows下就是main.exe)。那么这些文件就要有逻辑关系,否则编译器不知道怎么编译。all:main.out
    main.out:main.o window.o model.o data.o
        gcc -o main.out main.o window.o model.o data.o#上面的意思是说:
    #all:main.out
    如果想要编译所有:make all,那么将会生成main.out可执行文件。#main.out:main.o window.o model.o data.o
    而要生成这个main.out,需要依赖main.o,window.o,model.o,data.o 4个文件。#    gcc -o main.out main.o window.o model.o data.o
    这句是调用编译器编译,vc用的是cl。变异的时候可以加上很多的参数、定义的宏、链接库路径等。当然,还没有完呢,这些main.out依赖的这些 .o 怎么来的?window.o:window.c window.h
        gcc -c window.cmodel.o:model.c model.h
        gcc -c model.cdata.o:data.c data.h
        gcc -c data.c上面的-c参数是指定编译器编译出一个.o文件就可以了,不要再寻找main()函数做链接工作。这些和到一起,就是一个makefile,当然这些功能还太少,可以加上很多别的项目。但宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。现在的VC++真是太好了,不用一个字一个字的去敲Makefile 了。 ^_^
      

  2.   

    来晚了
    可以看看Think in C++
      

  3.   

    不过makefile在LINUX下还是非常基本的知识
      

  4.   

    产生一个Dos窗口,进到那个目录下,输入nmake,回车。
    如果安装VC时注册了环境变量,应该就可以运行了。程序没有错误的话,会出现exe的。
      

  5.   

    先生成一个MAKEFILE工程,如在Source中加入a.c文件,在里面写main()函数。将Project->Setting->Build Command Line 改为cl a.c就可以了。
    或者将Project->Setting->Build Command Line 改为a.bat.在工程中加入a.bat用批处理编译文件。
      

  6.   

    http://www.china-askpro.com/msg6/qa57.shtml
      

  7.   

    Project->Export MakeFile然后在工程目录下找到相应文件打开看了就知道了
      

  8.   

    谢谢!
    stream.h  和 values.h是什么文件?
    setw 和setprecision这两个函数是在哪些头文件里定义的呀?
      

  9.   

    我知道了setw和setprecision是在iomanip.h里
    我把所有的c文件改成了cpp,再把头文件和源文件里包含的一些文件改了错误就大大减少了
    现在还有一个error:  Cannot open include file: 'values.h': No such file or directory
      

  10.   

    有说明的没注意看,赫赫:
    "Make sure the compiler treats these as C++ and not C files -- xlC for example requires the -+ flag to treat files with .c or .h extensions as C++ files. "
      

  11.   

    To qabp(又迷路了)
    建议你装个vs 的 Visual.Assist,可以狠方便的定位到宏,函数,变量等的定义处,在vckbase有下载,如果要最新的去google搜索
      

  12.   

    谢谢!
    现在已经编译成功了.
    Visual.Assist已经装了,谢谢!