繁体   English   中英

C ++ 11的Sublime Text构建文件

[英]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 但为什么?

  1. 他要包括的文件是/usr/include/pqxx/pqxx 他将其包含在#include <pqxx/pqxx> (他没有提供有关stackoverflow的信息)。 使用此include语句,因为/usr/include在标准路径中,所以他不需要附加的include路径。

  2. 但是,为什么构建失败了?

     % ~ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM