分类 默认分类 下的文章

Qt使用预编译头PCH及多核编译加快编译

最近在用Qt做一些小项目的时候,发现Qt的编译很慢,理论上来说不应该有这样的问题的。查了一下Qt的文档以及在知乎上的问题为什么 Qt Creator 的编译如此之慢?,调整了一些设置以后好多了。

问题主要是出在在没有设置的情况下每一次编译Qt都会编译所有文件,这是不应该的。

  1. 预编译头文件

project.pro文件中,加入以下两行

CONFIG += c++11  precompile_header
PRECOMPILED_HEADER  = stable.h

stable。h中加入头文件,在开发阶段可以直接加入QWidgets,QtGui等重量级头文件,此后编译中就不会再对这些头文件进行处理了。注意,stable.h文件不要被包含在项目的任意角落里面。

  1. make启动多核编译

项目——构建设置——构建步骤——make的参数中,加入-jX选项,其中X为CPU线程数+1,如我的I7是四核八线程,此处应该为-j9
注:make的选项仅适用于MinGw编译。
MSVC编译器可以在pro文件中加入(未测试)

QMAKE_CXXFLAGS += /MP

C++的string和char*并不隐式转换

string转const char*


   string s = "abc";

   const char* c_s = s.c_str();

const char*转string


   const char* c_s = "abc";

   string s(c_s);

在libcurl的设置POST中遇见了诡异的Bug,本来是好端端的url,post过去结果怎么都不对劲。后来查了API才注意到
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
其POST的参数内容类型为char*,而我的URL的类型为std::string。这也是脚本语言写多了,对类型不敏感导致的错误