设置g ++编译器和链接器选项

时间:2014-06-28 22:30:15

标签: c++ linux vim g++

我刚刚从Windows和VC切换回Linux,但我从未使用g ++编译器进行任何特殊编码。 目前我的库(boost和其他)分散在整个硬盘驱动器上,我需要学习如何设置我的编译器和链接器以便所有编译器设置.. (包括,libs,标志)等..将被保存在一个文件或地方,以便管理变得容易,因为每次我在命令行上启动编译器时我都不想输入这些内容。 另请注意,我使用vim作为我的代码编辑器,并且不想使用IDE。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您需要使用部分Building tools。它允许您键入小命令(在vim中只需键入:make),它可以使用预定参数(包括,库等)启动构建过程。

对于C++ LinuxQt,最常用的工具是:
  - make;
  - automake;
  - CMake 如果您使用make,则qmake也可用。

我有所有这些经验,我的建议是对小项目使用普通CMake,对其他人使用autotools,而在没有Makefile时则不使用make这样做。

注意:所有高级工具都可以帮助生成普通CMake的适当文件(Makefile)(CMakeLists.txt生成automake基于Makefile.amqmake基于*.pro,{{1}}基于{{1}}。

答案 1 :(得分:1)

because I don't want to type these things every time I launch the 
compiler on command line.

我不想输入任何一个。我想为小型构建做的就是问题:

(1) a short alias (2) the name of the file to compile, and (3) an output file.

然后我希望我的工具能够处理所有常见选项,如果需要,可以包含任何额外的-I包含目录,-L库目录的路径,并为我构建命令行。

我有一个可以处理苦差事的简短脚本。将您的项目分成不同的目录,并包括一个' bldflags'具有特定选项的文件允许脚本加载您可能需要的任何项目特定选项。它足够灵活,可以在命令行中指定任何其他选项。在.bashrc中为脚本添加别名,快速构建所需的只是:

g+ filename.cpp outname

现在这是一个非常基本的脚本,并不打算为您的项目替换正确的构建工具,但是为了快速编译,它或类似的东西,肯定会减少所需的输入。这是一个简短的脚本:

#!/bin/bash

## validate input
test -n "$1" && test -n "$2"|| { echo "insufficient input. usage: ${0//*\//} source.cpp out [options]"; exit 1; }

## set standard build flags and test if exists/source ./bldflags
stdclfags="-Wall"             # add any standard flags you use.
test -r ./bldflags && bldflags="`<./bldflags`"

## show build command and call g++
echo -e "building $1 with:\n  g++ $stdclfags -o $2 $1 $bldflags ${@:3}"
g++ $stdclfags -o "$2" "$1" $bldflags ${@:3}

exit 0

让脚本可执行,并在.bashrc中添加一个简单的别名,为其指定任何名称:

alias g+='/home/david/scr/utl/bgc++.sh'

基本用法示例:(基本没有附加标记或./bldflags文件)

$ g+ input.cpp output
building input.cpp with:
  g++ -Wall -o output input.cpp

在命令行中添加了一些额外选项:

$ g+ input.cpp output -Wunused -fno-default-inline
building input.cpp with:
  g++ -Wall -o output input.cpp  -Wunused -fno-default-inline

在./bldflags中包含项目特定选项(例如:-I/home/david/inc -L/home/david/lib -Wl,-rpath=/home/david/lib

g+ input.cpp output -Wunused -fno-default-inline
building input.cpp with:
  g++ -Wall -o output input.cpp -I/home/david/inc -L/home/david/lib -Wl,-rpath=/home/david/lib -Wunused -fno-default-inline

为了解决I don't want to type these things every time I launch the compiler on command line问题,我发现这是一种非常快速简便的方法,可以将快速/重复版本的输入降低到最低限度,而Makefile isn&# 39; t需要。