Skip to content
This repository was archived by the owner on Jan 21, 2022. It is now read-only.

Commit 3a78305

Browse files
committed
Properly rebuild resource file if shader changes (#53)
Unfortunately CMAKE_AUTORCC does not properly add dependencies on the files included by the qrc file. This means that when a file changes that is included in the qrc file, the qrc file is not automatically rebuilt. This results in broken builds. Fix this by building the qrc file directly (instead of relying on CMAKE_AUTORCC) and adding proper dependencies. As a side cleanup, move the resources.qrc file to resources/, so the top-level directory is cleaner.
1 parent ccfd0ec commit 3a78305

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

Diff for: CMakeLists.txt

+20-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD 14)
88
set(CMAKE_INCLUDE_CURRENT_DIR ON)
99
set(CMAKE_AUTOMOC ON)
1010
set(CMAKE_AUTOUIC ON)
11-
set(CMAKE_AUTORCC ON)
11+
set(CMAKE_AUTORCC OFF)
1212

1313
find_package(Qt5 COMPONENTS Core Gui OpenGL Widgets Xml Network REQUIRED)
1414

@@ -24,6 +24,24 @@ find_library(
2424
HINTS /usr/lib/fmi-library /usr/lib /usr/local/lib/fmi-library /usr/local/lib
2525
)
2626

27+
# Unfortunately CMAKE_AUTORCC does not automatically rebuild the qrc file if one
28+
# of the contained files changes. Set up rcc manually to ensure correct builds
29+
# even if e.g. the shaders change.
30+
set(RCC_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/rcc_resources.cpp)
31+
add_custom_command(OUTPUT ${RCC_OUTPUT_FILE}
32+
COMMAND ${Qt5Core_RCC_EXECUTABLE}
33+
ARGS -o ${RCC_OUTPUT_FILE}
34+
resources.qrc
35+
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/resources
36+
MAIN_DEPENDENCY resources/resources.qrc
37+
DEPENDS resources/Shaders/FragmentShader.frag
38+
resources/Shaders/VertexShader.vert
39+
resources/Images/Grid.png
40+
VERBATIM)
41+
set_property(SOURCE ${RCC_OUTPUT_FILE} PROPERTY SKIP_AUTOMOC ON)
42+
set_property(SOURCE ${RCC_OUTPUT_FILE} PROPERTY SKIP_AUTOUIC ON)
43+
set_property(SOURCE ${RCC_OUTPUT_FILE} PROPERTY SKIP_AUTOGEN ON)
44+
2745
set(SOURCES
2846
src/main.cpp
2947
src/mainwindow.cpp
@@ -47,7 +65,7 @@ set(SOURCES
4765
src/glfieldofview.cpp
4866
src/fmureceiver.cpp
4967
src/utils.cpp
50-
resources.qrc
68+
${CMAKE_CURRENT_BINARY_DIR}/rcc_resources.cpp
5169
)
5270

5371
set(HEADERS

Diff for: resources.qrc

-7
This file was deleted.

Diff for: resources/resources.qrc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<!DOCTYPE RCC><RCC version="1.0">
2+
<qresource>
3+
<file>Shaders/FragmentShader.frag</file>
4+
<file>Shaders/VertexShader.vert</file>
5+
<file>Images/Grid.png</file>
6+
</qresource>
7+
</RCC>

0 commit comments

Comments
 (0)