我想这是相当直接的,但我承认我不太熟悉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
变量,它就会被包括在该列表中。
关于如何解决这个问题,有什么建议吗?
解决了问题。事实上,我对"add_executable"的区别是正确的。由于这是一个库,而不是可执行文件,所以我必须在add_library调用中添加对包装变量的引用,即:
add_library ( ${...} ${COMPONENT_UI_HDR} )
编译顺利。。。