Ubuntu下QT Creator 配置Astyle代码格式化插件

昨天将Ubuntu 14.04下的QT Creator更新到3.5.1,今天继续,完善QT creator的代码编辑能力,配置Astyle代码格式化插件。

1、打开QT Creator,依次选择菜单“帮助”->“关于插件”,找到-C++下的Beautifier插件,并勾选,重启QT Creator。

2、打开QT Creator后,依次选择菜单“工具”->“选项”,此时“选项”框里出现了Beautifier的配置项,此时“Artistic Style”选项卡里的astyle却是红色(因为未安装)。

3、安装Astyle

打开终端,输入指令

sudo apt-get install astyle

4、添加Astyle脚本

Astyle支持的代码格式化格式很多,具体可以参见http://astyle.sourceforge.net/,个人喜欢的格式脚本如下

--style=allman
--style=ansi
--style=bsd
--style=break
-A1
--indent-switches
-S
--pad-return-type
-xq
--keep-one-line-statements
-o
--add-braces
-j
--max-continuation-indent=# / -M#
--indent-continuation=# / -xt#
--indent-preproc-block
-xW

5、代码格式化

打开一个项目,依次选择菜单“工具”->“Beautifler”->“Artisitic style”->“Fomat Current File”即可对当前文档格式化,文档保存时也会被格式化。

点击后,QT Creator的“概要信息”输出了错误,这是因为直接安装的Astyle版本较老,而脚本是根据最新的规范编写的

updatePchInfo: switching to none
Error in Beautifier: /usr/bin/astyle: 无效的配置文件选项:
pad-return-type
xq
add-braces
max-continuation-indent=
indent-continuation=
indent-preproc-block
xW

输入'astyle -h'以获得有关命令行的帮助

Artistic Style 已经终止运行

6、重新编译Astyle

①到官方网站去下载最新的版本https://sourceforge.net/projects/astyle/files/astyle/astyle%203.1/,最新版本为3.1版,查了下直接通过命令安装的是2.03-1,将“astyle_3.1_linux.tar.gz”下载下来,并解压。

②进入到astyle/build/gcc目录,打开终端,输入命令 

make

输出结果如下:是g++版本不支持-std=c++11

g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/astyle_main.cpp -o obj/astyle_main.o
cc1plus: error: unrecognized command line option "-std=c++11"
make: *** [obj/astyle_main.o] 错误 1

③查看GCC版本,输入命令:

gcc -v

输出结果如下:gcc版本是4.4.7,需要升级

Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.7-8ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --disable-libmudflap --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-8ubuntu1) 

④升级GCC,首先考虑gcc 5 版本的,结果不行安装不了,gcc 4.9也安装不了,gcc 4.8显示安装了

sudo apt-get upgrade
sudo apt-get install gcc-4.8 g++-4.8
sudo apt-get install gcc-4.9 g++-4.9
sudo apt-get install gcc-5 g++-5

输出结果如下:

alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo apt-get install gcc-5 g++-5
[sudo] password for alex: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
E: 未发现软件包 gcc-5
E: 未发现软件包 g++-5
E: 无法按照正则表达式 g++-5 找到任何软件包
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo apt-get install gcc-4.9 g++-4.9
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
注意,根据正则表达式 gcc-4.9 选中了 gcc-4.9-base
E: 未发现软件包 g++-4.9
E: 无法按照正则表达式 g++-4.9 找到任何软件包
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo apt-get install gcc-4.8 g++-4.8
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
g++-4.8 已经是最新的版本了。
g++-4.8 被设置为手动安装。
gcc-4.8 已经是最新的版本了。
gcc-4.8 被设置为手动安装。
下列软件包是自动安装的并且现在不需要了:
  libfile-desktopentry-perl libfile-mimeinfo-perl libltdl-dev libqt5clucene5
  libqt5designer5 libqt5help5 python3-sip
Use 'apt-get autoremove' to remove them.
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

⑤切换gcc和g++版本,显示gcc 4.8已经安装了,但是gcc -v查出来的却是低版本的,于是切换gcc版本,输入指令:

sudo update-alternatives --config gcc

结果如下:输入0,选择gcc-4.8 自动模式

alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo update-alternatives --config gcc
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

  选择       路径            优先级  状态
------------------------------------------------------------
  0            /usr/bin/gcc-4.8   60        自动模式
* 1            /usr/bin/gcc-4.4   40        手动模式
  2            /usr/bin/gcc-4.8   60        手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:0
update-alternatives: using /usr/bin/gcc-4.8 to provide /usr/bin/gcc (gcc) in 自动模式

再次编译,错误是一样的,但是查询gcc版本已经变化了,一看是c++,可能是用的是g++编译,查询g++版本,果然还是4.4,继续切换g++版本,输入指令如下:

sudo update-alternatives --config g++

切换完成g++版本,再次编译成功,以上一连串指令及结果如下:

alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ make
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/astyle_main.cpp -o obj/astyle_main.o
cc1plus: error: unrecognized command line option "-std=c++11"
make: *** [obj/astyle_main.o] 错误 1
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ 
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.8/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-i386 --with-arch-directory=i386 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-targets=all --enable-multiarch --disable-werror --with-arch-32=i686 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo update-alternatives --config g++
有 2 个候选项可用于替换 g++ (提供 /usr/bin/g++)。

  选择       路径            优先级  状态
------------------------------------------------------------
  0            /usr/bin/g++-4.8   60        自动模式
* 1            /usr/bin/g++-4.4   40        手动模式
  2            /usr/bin/g++-4.8   60        手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:0
update-alternatives: using /usr/bin/g++-4.8 to provide /usr/bin/g++ (g++) in 自动模式
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.8/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.4-2ubuntu1~14.04' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-i386 --with-arch-directory=i386 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-targets=all --enable-multiarch --disable-werror --with-arch-32=i686 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04) 
alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ make
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/astyle_main.cpp -o obj/astyle_main.o
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/ASBeautifier.cpp -o obj/ASBeautifier.o
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/ASFormatter.cpp -o obj/ASFormatter.o
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/ASEnhancer.cpp -o obj/ASEnhancer.o
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/ASLocalizer.cpp -o obj/ASLocalizer.o
g++ -DNDEBUG -O3 -Wall -Wextra -fno-rtti -fno-exceptions -std=c++11 -c ../../src/ASResource.cpp -o obj/ASResource.o
g++ -s -o bin/astyle obj/astyle_main.o obj/ASBeautifier.o obj/ASFormatter.o obj/ASEnhancer.o obj/ASLocalizer.o obj/ASResource.o

⑥安装编译后的Astyle,输入指令如下:

sudo make install

结果如下:

alex@alex-VirtualBox:~/Downloads/astyle/build/gcc$ sudo make install
install -o root -g root -m 755 -d /usr/bin
install -o root -g root -m 755 -d /usr/share/doc/astyle

7、再次执行代码格式化

再次执行代码格式化(参照第5步),正常,未提示错误

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值