我怎么能通过cmake执行exe(ut of Qt3)

时间:2015-03-26 07:22:53

标签: c++ qt cmake qt3

我试图调用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上的配置按钮)时,它会给我留言

  

CMR警告(dev)在src / CMakeLists.txt:21(add_custom_command):
  未设置策略CMP0040:目标在TARGET签名中   add_custom_command()必须存在。运行" 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}")

2 个答案:

答案 0 :(得分:0)

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

首先尝试使用完整路径。如果有效,请返回“uic.exe”并尝试将其位置添加到与cmake等效的linux PATH中。

答案 1 :(得分:0)

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

add_dependencies(${PROJECT_NAME} uic)