Skip to content

Commit d1c8d34

Browse files
author
feihong
committed
add custom targets to automatically run generated commands
1 parent 5ac1eca commit d1c8d34

File tree

3 files changed

+28
-14
lines changed

3 files changed

+28
-14
lines changed

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
cmake_minimum_required(VERSION 3.27)
22

3+
enable_testing()
4+
35
project(PythonQt LANGUAGES CXX VERSION 3.5.6)
46

57
set(CMAKE_CXX_STANDARD 11)
@@ -12,8 +14,7 @@ set(PYTHONQT_SUFFIX Qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}-Python${Python3_VE
1214

1315
add_subdirectory(generator)
1416

15-
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp)
16-
if(NOT EXISTS ${PYTHONQT_GENERATED_PATH})
17+
if(NOT EXISTS "${PYTHONQT_GENERATED_PATH}")
1718
if(${QT_VERSION_MAJOR} VERSION_EQUAL 5)
1819
if(${QT_VERSION_MINOR} VERSION_LESS 3)
1920
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_LIST_DIR}/generated_cpp_50)

generator/CMakeLists.txt

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,24 @@ target_link_libraries(${PROJECT_NAME} PUBLIC
2424

2525
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR})
2626

27-
# file(GLOB resources_files *.txt *.xml)
28-
# foreach(resources_file IN LISTS resources_files)
29-
# configure_file(${resources_file} ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
30-
# endforeach()
31-
32-
# file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/generated_cpp")
33-
34-
# add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
35-
# COMMAND set Path="%Path%;"
36-
# COMMAND $<TARGET_FILE:${PROJECT_NAME}>
37-
# WORKING_DIRECTORY $<TARGET_FILE_DIR:${PROJECT_NAME}>
38-
# )
27+
set(PYTHONQT_GENERATED_PATH ${CMAKE_CURRENT_BINARY_DIR}/../generated_cpp PARENT_SCOPE)
28+
29+
if(NOT EXISTS ${PYTHONQT_GENERATED_PATH})
30+
file(GLOB resources_files *.txt *.xml qtscript_masterinclude.h)
31+
foreach(resources_file IN LISTS resources_files)
32+
configure_file(${resources_file} ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
33+
endforeach()
34+
35+
if(WIN32)
36+
set(LIBRARY_SEARCH_PATH PATH)
37+
else()
38+
set(LIBRARY_SEARCH_PATH LD_LIBRARY_PATH)
39+
endif()
40+
41+
add_custom_target(GenerateCpp
42+
COMMAND ${CMAKE_COMMAND} -E env --modify ${LIBRARY_SEARCH_PATH}=path_list_prepend:$<TARGET_FILE_DIR:Qt${QT_VERSION_MAJOR}::Widgets> $<TARGET_FILE:${PROJECT_NAME}>
43+
WORKING_DIRECTORY $<TARGET_FILE_DIR:${PROJECT_NAME}>
44+
VERBATIM USES_TERMINAL
45+
)
46+
endif()
47+

tests/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,7 @@ add_test(NAME ${PROJECT_NAME}
2323
COMMAND $<TARGET_FILE:${PROJECT_NAME}>
2424
WORKING_DIRECTORY $<TARGET_FILE_DIR:${PROJECT_NAME}>
2525
)
26+
27+
set_tests_properties(${PROJECT_NAME} PROPERTIES
28+
ENVIRONMENT_MODIFICATION "Path=path_list_append:$<TARGET_FILE_DIR:Qt${QT_VERSION_MAJOR}::Widgets>"
29+
)

0 commit comments

Comments
 (0)