cmake 不使用 QT4_automoc 生成 Qt moc 文件
Posted
技术标签:
【中文标题】cmake 不使用 QT4_automoc 生成 Qt moc 文件【英文标题】:cmake doesn't generate Qt moc files using QT4_automoc 【发布时间】:2011-04-28 18:14:59 【问题描述】:我正在尝试在 Windows 7 上使用 Visual Studio 2010 编译器在 Qt 中编译一个小测试应用程序 basic layout example。
我正在使用 cmake (2.8.4) 和 nmake 来构建示例,但它无法生成 moc 文件。 这会导致编译错误:
无法打开包含文件:'dialog.moc':没有这样的文件或目录。
我的 CMakeLists.txt 中应该能够生成 moc 文件的规则是:
set(all_SOURCES main.cpp dialog.cpp)
QT4_AUTOMOC($all_SOURCES)
任何想法为什么没有生成 moc 文件或解决此问题的提示?
谢谢!
【问题讨论】:
【参考方案1】:收集你需要的所有头文件,然后将这些头文件传递给 qt4_wrap_cpp,然后将这些文件添加到你的库/可执行文件中。
FIND_PACKAGE(Qt4 REQUIRED)
include($QT_USE_FILE)
set (FOO_MOC_HEADERS foo.h)
qt4_wrap_cpp (FOO_MOC_OUTFILES $FOO_MOC_HEADERS)
add_library (foo SHARED $FOO_SOURCE_FILES $FOO_MOC_OUTFILES)
【讨论】:
不知何故(即使我尝试了几次)它现在似乎确实可以与 qt4_automoc 一起使用,使用 set(all_SOURCES main.cpp dialog.cpp) QT4_AUTOMOC($all_SOURCES) add_executable(Test $ all_SOURCES) target_link_libraries(Test $LINK_LIBRARIES) 我认为您应该更喜欢 qt4_wrap_cpp,将其输出添加到您的库中,而不是手动包含 .moc 文件。我发现过去更可靠。以上是关于cmake 不使用 QT4_automoc 生成 Qt moc 文件的主要内容,如果未能解决你的问题,请参考以下文章