9ce60ff509
That will allow things like this: find_package(Qt4) qt4_generate_moc(myfile.h moc_myfile.cpp TARGET foo) # Note, foo target doesn't # exist until below. add_library(foo ...) The qt4_generate_moc call would use the INCLUDE_DIRECTORIES from the foo target using generator expressions. Currently it reads the INCLUDE_DIRECTORIES directory property, meaning that include_directories() is required. Support for the TARGET is also added to qt4_wrap_cpp, but not qt4_automoc, as that is deprecated in favor of the AUTOMOC target property. The moc tool reports failure if the Q_INTERFACES macro is used with an argument which has not appeared with Q_DECLARE_INTERFACE, so that is the basis of the unit test. The command line arguments are now always written to a file, which is passed to moc as the @atfile. This was already the case on Windows, but now it is used everywhere. The reason for that is that it is not currently possible to expand the list of includes from a target directly in a add_custom_command invokation (though that may become possible in the future). There is not a big disadvantage to using the file anyway on unix, so having one code path instead of two is also a motivation.
39 lines
1.3 KiB
CMake
39 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
|
|
project(Qt4Targets)
|
|
|
|
cmake_policy(SET CMP0020 NEW)
|
|
|
|
find_package(Qt4 REQUIRED)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
|
add_executable(Qt4Targets WIN32 main.cpp)
|
|
target_link_libraries(Qt4Targets Qt4::QtGui)
|
|
|
|
if (WIN32)
|
|
if (TARGET Qt4::QAxServer)
|
|
add_executable(activeqtexe WIN32 activeqtexe.cpp)
|
|
set_property(TARGET activeqtexe PROPERTY QT4_NO_LINK_QTMAIN ON)
|
|
target_link_libraries(activeqtexe Qt4::QAxServer Qt4::QtGui)
|
|
endif()
|
|
endif()
|
|
|
|
qt4_generate_moc(main_gen_test.cpp
|
|
"${CMAKE_CURRENT_BINARY_DIR}/main_gen_test.moc"
|
|
TARGET Qt4GenerateMacroTest
|
|
)
|
|
add_executable(Qt4GenerateMacroTest WIN32 main_gen_test.cpp "${CMAKE_CURRENT_BINARY_DIR}/main_gen_test.moc")
|
|
set_property(TARGET Qt4GenerateMacroTest PROPERTY AUTOMOC OFF)
|
|
target_include_directories(Qt4GenerateMacroTest PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/interface")
|
|
target_link_libraries(Qt4GenerateMacroTest Qt4::QtGui)
|
|
|
|
qt4_wrap_cpp(moc_file mywrapobject.h
|
|
TARGET Qt4WrapMacroTest
|
|
)
|
|
add_executable(Qt4WrapMacroTest WIN32 main_wrap_test.cpp ${moc_file})
|
|
set_property(TARGET Qt4WrapMacroTest PROPERTY AUTOMOC OFF)
|
|
target_include_directories(Qt4WrapMacroTest PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/interface")
|
|
target_link_libraries(Qt4WrapMacroTest Qt4::QtGui)
|