我正在尝试设置一个 Boost.Build .jamroot 文件来编译 Qt 4.8 项目,但它似乎忽略了应该被 moc:ed 的 .ui 文件和 .cpp 文件。我试着在 qt4.jam 内部四处寻找,添加了更多 ECHO:s,但我不确定该去哪里找。
例如,uic-generator 的 run 方法似乎没有被调用(init 被调用),但我认为它应该被调用。
我的 jamroot 文件看起来像这样:
import qt4 ;
if ! [ qt4.initialized ]
{
ECHO "oh nooo" ;
}
import cast ;
exe application :
# For example
[ cast _ moccable-cpp : ./src/something.cpp ]
[ glob-tree *.ui : .svn ]
;
我得到的唯一输出是:
>bjam
warn: Unable to construct ./application
...found 1 target...
如果我运行 bjam --debug-configuration,qt4.jam 会打印出我的 Qt 安装的所有正确路径。
怎么了?也许它与 Qt 4.8 不兼容?还是我只是用错了?尽管代码几乎是从 examples/qt 下的文件中逐字提取的。
我该如何使用它? 感谢您的帮助。
编辑: 将 gcc 4.7 与来自 http://nuwen.net/mingw.html 的 MinGW 发行版 9.0 一起使用,以及 Boost 1.49.0 附带的 Boost.Build。
最佳答案
将 ./src/something.cpp 替换为 ./src/something.hpp,即:
[ cast _ moccable-cpp : ./src/something.hpp ]
bjam 的 qt-examples 容易引起误解:main.cpp 模块混淆了源 和 header 文件。
让我们记住 moc 通常处理头文件(带有 Q_OBJECT 的类声明的文件:在大多数情况下,源文件不包含它)
关于c++ - Boost.Build/bjam 和 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383613/