1

我正在尝试调用 Qt3 的 uic(维护遗留代码),但没有这样做。以下是我的 make 文件

project(testQt3)
cmake_minimum_required(VERSION 2.8.11)

set(PROJECT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../project)
set(PROJECT_ARCH $ENV{MAKEOBJDIR})

set(CMAKE_BUILD_TYPE Release)

aux_source_directory(. SRC_LIST)

add_executable(${PROJECT_NAME} ${SRC_LIST})  

set(Qt3DirPath ${PROJECT_PATH}/qt/${PROJECT_ARCH})
set(Qt3LibPath ${Qt3DirPath}/lib)        
set(Qt3Libs ${Qt3LibPath}/qt-mt338.lib ${Qt3LibPath}/qtmain.lib)   

add_custom_command(TARGET uic.exe
    PRE_BUILD
    COMMAND  ${CMAKE_CURRENT_SOURCE_DIR}/../data/import_card_info.ui -o ${CMAKE_CURRENT_SOURCE_DIR}/../incl/import_card_info_ui.h
    WORKING_DIRECTORY ${Qt3DirPath}/bin
)       

target_link_libraries(${PROJECT_NAME} ${Qt3Libs})

当我运行 cmake(单击 cmake gui 上的配置按钮)时,它会给我消息

src/CMakeLists.txt:21 (add_custom_command) 处的 CMake 警告 (dev):
未设置策略 CMP0040:add_custom_command() 的 TARGET 签名中的目标
必须存在。运行“cmake --help-policy CMP0040”以获取策略详细信息。使用 cmake_policy 命令设置策略并禁止显示此警告。

在此上下文中,目标名称“uic.exe”是未知的。此警告适用于项目开发人员。使用 -Wno-dev 来抑制它。

我如何要求 uic.exe 通过 cmake 为我生成 ui 文件?

ps : find_package 命令不起作用,这就是为什么我想写一个简单的函数来为我生成 ui 和 moc 文件。我尝试设置 CMAKE_PREFIX_PATH,但它也不起作用

#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${Qt3Dir}")
4

2 回答 2

0

我唯一想到的是cmake找不到uic.exe

首先尝试使用完整路径。如果可行,请返回“uic.exe”并尝试将其位置添加到相当于 cmake 的 linux PATH 中。

于 2015-03-26T09:34:18.480 回答
0

我找到了原因,为了让 cmake 生成一个 makefile,它会通过 set_custom_target 调用 exe 设置,我必须添加一个命令

add_dependencies(${PROJECT_NAME} uic)
于 2015-03-27T01:24:05.907 回答