1
votes

I am trying to call the uic of Qt3(maintaining legacy codes), but fail to do so.Following is my make file

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})

When I run the cmake(click on the configure button on cmake gui), it give me messages

CMake Warning (dev) at src/CMakeLists.txt:21 (add_custom_command):
Policy CMP0040 is not set: The target in the TARGET signature of
add_custom_command() must exist. Run "cmake --help-policy CMP0040" for policy details. Use the cmake_policy command to set the policy and suppress this warning.

The target name "uic.exe" is unknown in this context. This warning is for project developers. Use -Wno-dev to suppress it.

How could I ask the uic.exe generate the ui file for me by cmake?

ps : The find_package command cannot work, that is why I want to write a simple function to generate the ui and moc file for me. I try to setup the CMAKE_PREFIX_PATH, but it also do not work

#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${Qt3Dir}")
2
You say that find_package can't work. Why is that? Did you take a look at this article of the Qt Quarterly?nils

2 Answers

0
votes

The only thing that comes to my mind is that cmake is not able to find the uic.exe

Try with the full path first. If it works, go back to "uic.exe" and try adding its location to the linux PATH equivalent of cmake.

0
votes

I find out the reason, for cmake to generate a makefile which would call the exe setting by set_custom_target, I have to add a command

add_dependencies(${PROJECT_NAME} uic)