以下内容是VisualGDB官网对VisualGDB编译时获取相关编译信息的说明:

When you create a new project using VisualGDB, it will generate a Makefile for you. More specifically, it will generate 2 files: Makefile and flags.mak.

Overview

  • When you add new files to the project, VisualGDB will update the Makefile automatically
  • If you want to change the GCC/LD flags, edit the flags.mak file
  • If you want to add more configurations or targets, modify the Makefile.
  • If you don't want VisualGDB to touch the Makefile, remove the following line:
    #VisualGDB: AutoSourceFiles

Detailed description

The Makefile contains basic targets (such as all and clean) and generally has the following structure:

#VisualGDB: AutoSourceFiles
SOURCEFILES := file1.cpp file2.cpp
TARGETNAME := MyExeName
include flags.mak

ifeq ($(CONFIG),DEBUG)
    ...
endif

...

$(BINARYDIR)/%.o : %.cpp $(BINARYDIR)
    $(CXX) $(CFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)

$(BINARYDIR)/%.o : %.c $(BINARYDIR)
    $(CC) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep)

The SOURCEFILES line lists all source files used in the project. VisualGDB will automatically update this line when you add new files to the project. The "%.cpp" and "%.c" lines define generic rules to build .o files from the C/C++ source files.

The flags.mak defines GCC flags (such as optimization level) that are used by Makefile. Its typical structure looks the following way:

CC := /usr/bin/gcc
CXX := /usr/bin/g++
LD := /usr/bin/g++

...

CFLAGS := -ggdb -ffunction-sections
DEBUG_CFLAGS := -O0
RELEASE_CFLAGS := -O3

The following table summarizes all variables defined in flags.mak:

Variable Meaning Example
CC Location of the GCC compiler c:/gcc/gcc.exe
CXX Location of the C++ compiler c:/gcc/g++.exe
LD Location of the linker (typically GCC/G++ is used for linking) c:/gcc/g++.exe
COMMON_MACROS Preprocessor definitions to be defined in all configurations. _WIN32 _CONSOLE
DEBUG_MACROS Preprocessor definitions to be defined in DEBUG configuration only _DEBUG DEBUG
RELEASE_MACROS Preprocessor definitions to be defined in RELEASE configuration only _NDEBUG _RELEASE
MCUFLAGS Additional flags specifying microcontroller type -mmcu=msp430f2013
INCLUDE_DIRS Additional include directories relative to the project location ../lib1 ../lib2
LIBRARY_DIRS Additional library directories ../lib1/bin ../lib2/bin
LIBRARY_NAMES Additional libraries to link with (no "lib" prefix) 1 2
CFLAGS Additional GCC flags for all configurations -ggdb -ffunction-sections
DEBUG_CFLAGS Additional GCC flags for DEBUG configuration -O0
RELEASE_CFLAGS Additional GCC flags for RELEASE configuration -O3
CXXFLAGS Additional C++ flags for all configurations -fno-exceptions
DEBUG_CXXFLAGS Additional C++ flags for DEBUG configuration  
RELEASE_CXXFLAGS Additional C++ flags for RELEASE configuration  
MACOS_FRAMEWORKS Additional framework names (MacOS only) iokit
LDFLAGS Additional flags to the linker (with -Wl, prefix when GCC is used for linking)  
DEBUG_LDFLAGS Additional linker flags for DEBUG configuration  
RELEASE_LDFLAGS Additional linker flags for RELEASE configuration  
START_GROUP Either an empty string, or "-Wl,--start-group"  
END_GROUP Either an empty string, or "-Wl,--end-group"  

The START_GROUP/END_GROUP flags surround the library/object file list and allow specifying them in an arbitrary order (otherwise the object file list has to be sorted manually). You can set those variables to empty strings if your linker (e.g. MacOS linker) does not require those flags.

对上面的内容可以理解为为:Debug模式下,完整的make执行需要Makefile和debug.mak两个文件;Release模式下则需要Makefile和release.mak两个文件

如果需要导出VisualGDB的Makefile文件,只需要合并相应的两个文件即可。将.mak文件的内容放到Makefile文件内容的前面,所得到的Makefile文件即可进行编译。

VisualGDB Makefiles的更多相关文章

  1. 使用VS+VisualGDB编译Linux版本RCF

    RPC通信框架--RCF介绍中说了,RCF本身是支持跨平台的,其代码放到Linux平台,是可以通过gcc.make等工具,编译通过的. 官方提供的源码中,只有cmake编译脚本,并没有提供Makefi ...

  2. 使用VS+VisualGDB编译Linux版本RCF(相当于Linux也有COM版本了)

    阅读目录 通过向导配置项目 配置目录结构 修改项目配置 添加RCF源代码 完成配置并进行编译 添加测试程序 添加测试代码——通过TCP进行通信 运行测试程序并查看测试结果 VisualGDB生成的所有 ...

  3. 使用VS+VisualGDB编译调试Linux程序

    Linux程序开发变得越来越多,越来越多的程序.产品需要跨平台,甚至有些开源项目只支持Linux平台,所以掌握Linux开发变得越来越重要. 但是对于习惯了Windows下的开发,使用了VS这个宇宙第 ...

  4. VisualRust + VisualGDB编辑调试Rust

    Rust到1.6了,到了一个相对成熟的阶段,可以试用做一些项目了.但是写的代码越多,就会发现一个好的IDE相当于效率的一半.这里分享我 在Visual Studio的使用Rust的经验. 首先需要下载 ...

  5. Makefiles 介绍

    http://www-personal.umich.edu/~ppannuto/writings/makefiles.html Makefiles Makefiles (or, the GNU aut ...

  6. VisualGDB:使用VS创建CMake Linux项目

    转载地址:点击打开链接 根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何使用 ...

  7. VisualGDB系列8:使用VS创建CMake Linux项目

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何使用VS来创建.构建.调试一 ...

  8. VisualGDB系列11:Linux C++项目中使用外部Linux库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...

  9. VisualGDB系列10:快速调试Linux应用程序

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文介绍如何快速调试GCC构建的Linu ...

随机推荐

  1. javascript 闭包理解例子

    function Jquery(){ this.name = 'ysr'; this.sex = 'man'; return { x: this, age : 26 } } var b = new J ...

  2. angularJs-UI-bootstrap系列教程1(使用前的准备)

    之前一直想看看angular中Ui-bootstrap是如何使用的,但是苦于网站被墙了,一直看不到,最近偷偷的到墙外面看了一下文档,大致的了解了如何使用,在这里写这边文章主要就是为了那些被墙了的ang ...

  3. Vue.js起步

    Vue.js是一套构建用户界面的 渐进式框架,Vue 采用自底向上增量开发的设计,Vue 的核心库只关注视图层.Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用. V ...

  4. 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16(转)

    源:安卓能用的modebus CRC16计算,附上对应的C语言的CRC16 “源”即是原文地址,想了解作都更多文章及思想请移步到“源”.转过只是为了本人感兴趣的文章查找方便. 正文: 最近写安卓串口通 ...

  5. ajax修改密码

    <div>用户名:<input type="text" id="uid" /><span id="tt" st ...

  6. stm32实现待机唤醒

    STM32的低功耗模式有3种:1.睡眠模式(CM3内核停止,外设仍然运行)2.停机模式(所有时钟都停止)3.待机模式(1.8v内核电源关闭) 进入待机模式的方法,以及设置WK_UP引脚用于把STM32 ...

  7. IOS开发-UI学习-UIImageView控件

    在页面上展现本地图片: // 使用本地图片 // 先初始化UIImageView myImageV = [[UIImageView alloc]initWithFrame:CGRectMake(, , ...

  8. FB面经 Prepare: All Palindromic Substrings

    Given a string, calculate how many substring is palindrome. Ignore non-char characters. Ignore case; ...

  9. JavaScript高级程序设计-13:事件

    JavaScript与HTML之间的交互是通过事件实现的. 一.事件流 首先我们要明白事件流的概念.当我们点击一个按钮时,也点击了按钮的容器元素,甚至也点击了整个事件.事件流描述就是从页面中接收事件的 ...

  10. excel导入到Orcle

    Excel导入到Oracle中 在Oracle中创建一个表,与excel的表头对应 将excel文件保存为.csv格式 创建一个.ctl文件 load data infile 'd:\xiaoyou. ...