我正在使用qmake与QT Creator一起开发一个多可执行的QT项目.每个可执行文件都有自己的.pro文件,所有这些文件都包含在一个开头的.pro文件中(template = subdirs).每个单独的.pro文件还包含一个公共的.pri文件,该文件设置DESTDIR,以便所有可执行文件最终都在同一个地方.此DESTDIR取决于它是编译为调试还是发布.直到我们通过另一个子目录的.pro添加的涵盖范围广泛的一个下的可执行文件的集合,这已经表现的很出色.整体设置看起来像这样:
如果你有一个新签出的副本,你可以运行qmake,一切都会正常工作,直到你从调试切换到发布,反之亦然.执行此操作时,Project1.pro和Project2.pro更新并将其可执行文件放在正确的目录中,但Project3.pro和Project4.pro使用旧目录.
如果我手动删除所有受影响的makefile,qmake将生成新的.我想我可以写一些预编译命令来每次删除所有的makefile,但这似乎是错误的做事方式,更不用说我必须花费的时间来确保它在我们所有的平台上运行.
我在QT 4.6.4到4.8.1中试过这个
当我使用QT Creator时,我通过不同的构建配置在调试和释放模式之间切换,模仿我在命令谎言上做的事情(即添加或删除CONFIG + = debug)
非常感谢任何和所有的帮助.
因此我的问题是:如何在不完全关闭警告的情况下构建我的QT项目(或者必须通过一百万无目的的事情来找到我自己的警告)?我可以仅针对QT标头抑制警告吗?
几个月前,我在QT-Creator开始了一个QT项目.那时我正在使用gcc 4.6.经过一些其他优先事项后,我发现自己没有时间在项目上工作到现在为止.在过渡期间,我转而使用clang.当我配置我的QT项目使用clang时 - 在g ++中没有警告的情况下编译的项目 - 它在QT标题本身内生成了大约263个警告.主要是符号转换和无法访问的代码.
为了尝试解决这个问题,我根据Clang用户手册中的这个条目添加了-isystem/path/to/QT/include/dir ,但它似乎没有任何影响.虽然我不确定,但我认为这是因为我的代码#include是名称的QT标题,而不是目录.虽然解决方案可能是手动列出所使用的每个QT标头(尚未尝试过),但这意味着每次升级QT或使用新标头时我都必须更新它.当然有一个更好的解决方案.
这里要求的是正在执行的实际编译命令:
clang++ -c -pipe -Qunused-arguments -Weverything -cxx-isystem /path/to/qt/4.8.3/include/ -g -D_REENTRANT -DQT_NO_KEYWORDS -DQT_SHARED -I/path/to/qt/x86_64/4.8.3/mkspecs/unsupported/linux-clang -I. -I.moc -I.ui -I/path/to/qt/4.8.3/include/ -o .obj/main.o main.cpp
Run Code Online (Sandbox Code Playgroud)
我在用:
我最近发现自己正在使用一个需要更好组织的大型,不熟悉的,多部门的C++代码库.我想找到一种方法来映射哪些符号被哪些源文件用于任何给定的头文件.这是希望如果只有一个部门使用给定的功能,那么它可以移出共享区域并进入该部门的区域.
我的第一个想法是使用符号表:即.编译项目并转储每个目标文件的符号.从那里我想我可以简单地编写一个脚本来检查我的头文件中的符号是否被使用.虽然这种方法似乎可行,但它需要我从标题中创建一个我正在寻找的符号列表.由于我的知识有限,我不确定如何自动执行这样的过程,并且要测试数百个头文件,手动执行它是不可能的.
此外,在使用Linux时,大多数开发团队仅在Windows环境中工作.我可以在两个平台上使用哪些实用程序?
非常感谢任何和所有的帮助.