C++,WxWidgets项目设置修改xrc后,自动更新xrc文件

如何自动复制xrc文件目录?

1、cmakelist文件中,设置target_compile_definitions,这样运行时,就会只调用项目src目录中的xrc文件。同时,作为冗余,添加复制命令。

target_compile_definitions(text2video_xrc PRIVATE
UI_DIR="${CMAKE_SOURCE_DIR}/src/ui/"
)
add_custom_command(TARGET text2video_xrc POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${UI_SOURCE_DIR}
${UI_TARGET_DIR}
)

 

Cmakelist文件备份

cmake_minimum_required(VERSION 3.20)
project(text2video_xrc LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_WIN32_EXECUTABLE ON)

# wxWidgets 路径
set(wxWidgets_ROOT_DIR "E:/cpp/wxWidgets-3.3.1/install")
set(wxWidgets_LIB_DIR "${wxWidgets_ROOT_DIR}/lib/gcc_x64_lib")

find_package(wxWidgets CONFIG REQUIRED COMPONENTS
core
base
xrc
aui
html
stc
propgrid
richtext
)
include_directories(${wxWidgets_ROOT_DIR}/lib/gcc_x64_lib/mswu)


# 可执行文件
add_executable(text2video_xrc
src/main.cpp

)
include_directories(src)


add_compile_options(-finput-charset=UTF-8 -fexec-charset=UTF-8)

target_link_libraries(text2video_xrc PRIVATE wx::core wx::base wx::xrc wx::aui)
target_compile_definitions(text2video_xrc PRIVATE
UI_DIR="${CMAKE_SOURCE_DIR}/src/ui/"
)

if (WIN32)
target_sources(${PROJECT_NAME} PRIVATE "${wxWidgets_DIR}/../../../include/wx/msw/wx.rc")
endif ()


set(UI_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/ui")
set(UI_TARGET_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ui")

add_custom_command(TARGET text2video_xrc POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${UI_SOURCE_DIR}
${UI_TARGET_DIR}
)