mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-27 10:26:12 +00:00
We currently forward declare classes as we use them in functions.
But this breaks if classes with the same name were declared in the
parent namespace. As shown with this example
```C++
// Uncomment that line to make the code break
//struct SharedGlobals;
namespace ns {
// Is that a forward declaration in `ns`?
// Depends if it was declared before in the parent namespace
void foo(struct SharedGlobals *x) {}
// Actualy define ns::SharedGlobal
struct SharedGlobals { int x; };
int xyz() {
SharedGlobals globals;
foo(&globals);
}
}
```
So make sure we forward-declare the classes properly to be more robust
and be able to include generated file with namespace after a file
without namespace
CC #2909
8 lines
447 B
CMake
8 lines
447 B
CMake
# Copyright © SixtyFPS GmbH <info@slint.dev>
|
|
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
|
|
|
|
add_executable(multiple-includes main.cpp logic.cpp)
|
|
target_link_libraries(multiple-includes PRIVATE Slint::Slint)
|
|
slint_target_sources(multiple-includes app-window.slint COMPILATION_UNITS 0)
|
|
slint_target_sources(multiple-includes another-window.slint NAMESPACE other COMPILATION_UNITS 0)
|
|
|