C++,WxWidgets项目设置修改xrc后,自动更新xrc文件
2026-05-04 22:01:18
如何自动复制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}
)