[英]Sublime Text build file for C++11
我目前正在尝试在Sublime Text中设置我的构建系统以编译C ++ 11代码,并另外将libpqxx库用于一些Postgres数据库。
现在,没有C ++ 11,我的g ++命令如下所示:
"cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-I/usr/include/pqxx", "-lpqxx", "-lpq"]
哪个工作正常。
现在,我将"-std=c++0x"
到该行中,并且它不起作用。 但是,我编写了一个简单的测试程序,其中包含#include <regex>
,以默认的构建文件开始,并添加了C ++ 11标志,如下所示:
"cmd": ["g++", "-std=c++0x", "${file}", "-o", "${file_path}/${file_base_name}"]
工作正常。
我还尝试使用此行从终端运行构建:
g++ Connect.cpp -o Connect -std=c++0x -I/usr/include/pqxx -lpqxx, -lpq
但是也没有运气。
此外,我为-std=c++0x
尝试了其他位置。 在g++
之后,在输入和输出文件名之后,在include之后,在libary链接之后。 我试图将std标志更改为-std+gnu++11
, -std=c++11
, -std=gnu++0x
。 没有任何帮助。
我究竟做错了什么?
(通过我的GCC / G ++的版本4.9,所以C ++ 11本身应该不会有任何问题。不带lipqxx include和linking的testfile.cpp如前所述)
解决方案: -I/usr/include/pqxx
需要取出。
实际上,解决方案是删除-I/usr/include/pqxx
。 但为什么?
他要包括的文件是/usr/include/pqxx/pqxx
。 他将其包含在#include <pqxx/pqxx>
(他没有提供有关stackoverflow的信息)。 使用此include语句,因为/usr/include
在标准路径中,所以他不需要附加的include路径。
但是,为什么构建失败了?
% ~ cpp -Wall -std=c++11 -M test.cpp > test2 % ~ cpp -Wall -std=c++11 -I/usr/include/pqxx -M test.cpp > test % ~ cat test2 | sed "s/ \\\\\\\\//g" | sed "s/ /\\n/g" | sort > test2 % ~ cat test | sed "s/ \\\\\\\\//g" | sed "s/ /\\n/g" | sort > test % ~ diff test test2 235d234 < 270a270 > /usr/include/c++/4.9.0/array 404a405 > /usr/include/c++/4.9.0/tuple 496d496 < /usr/include/pqxx/tuple
-M
选项输出一个makefile.compatible头文件列表。 其余的只是在重新设计以具有更好的差异。
结果:使用-I/usr/include/pqxx
将包含pqxx/tuple
而不是标准c ++ tuple
。 这会导致他在此处未提供的编译错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.