我刚刚从Windows和VC切换回Linux,但我从未使用g ++编译器进行任何特殊编码。 目前我的库(boost和其他)分散在整个硬盘驱动器上,我需要学习如何设置我的编译器和链接器以便所有编译器设置.. (包括,libs,标志)等..将被保存在一个文件或地方,以便管理变得容易,因为每次我在命令行上启动编译器时我都不想输入这些内容。 另请注意,我使用vim作为我的代码编辑器,并且不想使用IDE。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
您需要使用部分Building tools。它允许您键入小命令(在vim
中只需键入:make
),它可以使用预定参数(包括,库等)启动构建过程。
对于C++
Linux
中Qt
,最常用的工具是:
- make;
- automake;
- CMake
如果您使用make
,则qmake也可用。
我有所有这些经验,我的建议是对小项目使用普通CMake
,对其他人使用autotools
,而在没有Makefile
时则不使用make
这样做。
注意:所有高级工具都可以帮助生成普通CMake
的适当文件(Makefile
)(CMakeLists.txt
生成automake
基于Makefile.am
,qmake
基于*.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需要。