我认为这是相当直截了当的,但我承认我并不精通CMake(或Qt),所以这就是问题所在:
我有一个在Qt Designer中构建的表单(带有.ui
文件)。已经创建了两个基于此表单的类。这两个类都有很多重复的代码。所以,我想创建一个使用多继承方法继承formname.ui
文件的基类来管理该公共代码。
问题是我不知道如何让CMake正确构建它。编译给出了错误ui_formname.h: No such file or directory
。
我已经确定了以下要素,以便让CMake正确地实现这一目标:
set (UI_HDR ${CMAKE_SOURCE_DIR}/path/to/formname.ui)
QT4_WRAP_UI (COMPONENT_UI_HDR ${UI_HDR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}) #Necessary here?
这个和另外两个案例的区别在于这个cmakefile没有构建可执行文件,而在另外两个案例中,它是。可能是我缺少其他东西,但缺少add_executable
行是我能看到的最明显的差异,因为COMPONENT_UI_HDR
变量将包含在该列表中,是否存在。
有关如何解决这个问题的任何建议吗?
答案 0 :(得分:1)
解决了这个问题。实际上,我对“add_executable”的区别是正确的。由于这是一个库而不是可执行文件,我不得不在add_library调用中添加对包装变量的引用,即:
add_library ( ${...} ${COMPONENT_UI_HDR} )
编译顺利......