Velt中的Makefile自动生成


VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visual studioIDE中进行Linux应用程序的开发(包括编译和调试),也可以进行ubootlinux内核的编译,并根据编译时的错误信息正确定位到源码。目前的版本是0.2.1,支持vs2012/vs2013/vs2015


下载地址:http://pan.baidu.com/s/1nt6bOOL


Velt讨论QQ群:375515651



velt-0.2.1开始,新增加一项功能:在编译时自动生成Makefile。本文就此做简单介绍。


首先用Velt的项目向导创建一个Linux下的应用程序,查看其属性:



将这里的自动生成Makefile”选为

保存后退出,然后生成项目。



1>------已启动生成: 项目: App5, 配置: DebugLinux ------

1>  -------ClCompile Task-----------

1> F:\projects\tmp\App5\App5\Makefile.Linux.Debug Created

1>  Using username "embed".

1>  Last login: Wed Nov 18 01:31:58 2015 from192.168.24.1

1>  [embed@localhost ~]$

1>

1>  export PS1="{d9c25309-f122-46c2-abb6-f28acf7d85c0}"

1>  export PATH=/usr/bin:$PATH

1>  cd /mnt/hgfs/projects/tmp/App5/App5/

1>  Bypass main.c...(No changes detected)

1>  --------- Link Task -------------------

1> F:\projects\tmp\App5\App5\Makefile.Linux.Debug Finished

1>  cd /mnt/hgfs/projects/tmp/App5/App5/

1>  gcc -o/mnt/hgfs/projects/tmp/App5/Linux/Debug/App5 Linux/Debug/main.o

1>  App5.vcxproj ->F:\projects\tmp\App5\Linux\Debug\App5


==========生成:成功 1 个,失败 0 个,最新 0 个,跳过 0 ==========


在项目成功生成的情况下,多了上面两行输出,在工程文件所在的目录下多了一个Makefile.Linux.Debug的文件。


看看此文件的内容:


# Makefile auto generated by Visual EmbedLinux Tools 0.2.1


 


Platform = Linux


Configuration = Debug


IntDir = Linux/Debug/


OutDir = ../Linux/Debug/


TargetPath = /mnt/hgfs/projects/tmp/App5/Linux/Debug/App5


 


CC = /usr/bin/gcc


CXX = /usr/bin/g++


AR = /usr/bin/ar


AS = /usr/bin/as


LD = $(CXX) $(CXXFLAGS)


 


.PHONY: all


all: $(TargetPath)


 


CFLAGS =  -O0  -ggdb 


 


$(IntDir)main.o: main.c


         $(CC) $(CFLAGS)$(CPPFLAGS) -o $@ -c $<


 


OBJS = $(IntDir)main.o


 


$(TargetPath): $(OBJS)


         $(CXX) -o$(TargetPath) $(OBJS) 


 


.PHONY: clean


clean:


         -rm $(OBJS)$(TargetPath) Makefile.depends


 


.PHONY: depends


depends:


         -$(CXX) $(CXXFLAGS)$(CPPFLAGS) -MM $(filter %.c %.cc %.cpp %.cxx,$(SRCS)) > Makefile.depends


 


-include Makefile.depends


 


 


在命令行下进入项目所在的路径并make


[embed@localhost ~]$ cd /mnt/hgfs/projects/tmp/App5/App5


[embed@localhost App5]$ make -f Makefile.Linux.Debug clean


rm Linux/Debug/main.o /mnt/hgfs/projects/tmp/App5/Linux/Debug/App5 Makefile.depends


rm: cannot remove `Makefile.depends': No such file or directory


make: [clean] Error 1 (ignored)


[embed@localhost App5]$ make -f Makefile.Linux.Debug


/usr/bin/gcc -O0  -ggdb    -o Linux/Debug/main.o -c main.c


/usr/bin/g++ -o /mnt/hgfs/projects/tmp/App5/Linux/Debug/App5 Linux/Debug/main.o  


[embed@localhost App5]$


一切正常。


 


之所以选择编译时生成Makefile而不是用一个单独的工具,主要是因为我们的编译参数与VC的编译参数不一致,使用单独的工具无法获取工程中配置的编译参数!


 


此版本生成的Makefile有两个限制:


不支持MinGW平台


不支持.s汇编















GNU libiconv-1.15和libintl-0.19.8.1,VS2015工程Makefile 命令行编译文件 CSDN-tags: libiconv1.15 libintl 0.19.8.1 VS2015 Makefile 声明: 代码为本人良心制作,虽然花费了一定的时间和精力,但不保证完全没有错误。如果您下载并使用了本代码,将其包含在您发布的应用,给您带来了经济上,心理上,生活上的损失,本人不负有责任。 所有代码都基于官网进行修改,iconv的代码来源于libiconv-1.15的lib目录,intl的代码来源于gettext-runtime的intl目录。 intl需要iconv的支持,如果想单独编译不需要iconv的intl, 请自行修改intl目录下的config.h文件, /* Define if you have the iconv() function and it works. */ #define HAVE_ICONV 1 /* Define to 1 if you have the header file. */ #define HAVE_ICONV_H 1 为: /* Define if you have the iconv() function and it works. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ 并修改VS工程预处理器定义,删掉/DDEPENDS_ON_LIBICONV=1 VS工程VS2015的工程文件,使用VC140工具集,如果没有2015,也可以用Makefile.mak文件来编译。 nmake /f Makefile.mak [DLL] [DEBUG] 指定 DLL=1 编译dll版本,默认是lib版本,libiconv.lib , libintl.lib。 指定 DEBUG=1 编译debug版本,默认是release版本。 同理,如果intl不需要iconv,请修改上面的配置文件选项,并, 删掉Makefile.mak/DDEPENDS_ON_LIBICONV=1 配置文件的制作,参考了以下几处,修改的大概原则是,能定义的全定义了,就这样: https://github.com/kahrl/gettext-msvc 这个地址提供了libiconv和libintl的VS工程和配置文件。 https://github.com/winlibs 为编译PHP而修改的libiconv和libintl源码,libiconv是最新1.15版本,gettext不是。 附带的Cygwin目录的工具 libiconv官方的制作文档,用cygwin配合VC,生成的配置文件。 一大堆的宏和函数搞得我头晕脑涨。所以配置文件如果有错误,也在所难免,所有修改的文件,如config.h,iconv.h,libintl.h都附带了原始文件。 如: 配置文件 原始文件 DLL原始文件 LIB原始文件 config.h config.h.in iconv.h iconv.h.build.in iconv.h.in localcharset.h localcharset.h.build.in localcharset.h.in libgnuintl.h libgnuintl.in.h 欢迎同学们下载测试。有问题可以给我发邮件travel981cn@139.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值