summaryrefslogtreecommitdiffstats
path: root/Tests/Qt4Targets/CMakeLists.txt
blob: 74300845a676dbf6bd92b67531e5cdba4bf10943 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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)

set(timeformat "%Y%j%H%M%S")
try_compile(RESULT
  "${CMAKE_CURRENT_BINARY_DIR}/IncrementalMocBuild"
  "${CMAKE_CURRENT_SOURCE_DIR}/IncrementalMoc"
  IncrementalMoc
  CMAKE_FLAGS -DADD_DEF=0 "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}")
file(TIMESTAMP "${CMAKE_CURRENT_BINARY_DIR}/IncrementalMocBuild/moc_foo.cpp" tsvar_before "${timeformat}")
if (NOT tsvar_before)
  message(SEND_ERROR "Unable to read timestamp from moc file from first build!")
endif()

execute_process(COMMAND "${CMAKE_COMMAND}" -E sleep 2) # Ensure that the timestamp will change.

try_compile(RESULT
  "${CMAKE_CURRENT_BINARY_DIR}/IncrementalMocBuild"
  "${CMAKE_CURRENT_SOURCE_DIR}/IncrementalMoc"
  IncrementalMoc
  CMAKE_FLAGS -DADD_DEF=1 "-DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}")
file(TIMESTAMP "${CMAKE_CURRENT_BINARY_DIR}/IncrementalMocBuild/moc_foo.cpp" tsvar_after "${timeformat}")
if (NOT tsvar_after)
  message(SEND_ERROR "Unable to read timestamp from moc file from second build!")
endif()

if (NOT tsvar_after GREATER tsvar_before)
  message(SEND_ERROR "Rebuild did not re-create moc file. Before: ${tsvar_before}. After: ${tsvar_after}")
endif()