build(cmake): fix MSVC exports for shared/static libraries on Windows (#9026)

Co-authored-by: bedrock <gaojie1@novastar.tech>
This commit is contained in:
André Costa
2025-10-09 21:07:25 +02:00
committed by GitHub
parent cc35e00ba0
commit 283d49ef82

View File

@@ -27,7 +27,7 @@ else()
endif()
#[[
unfortunately CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not work for global data.
unfortunately CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS does not work for global data.
for global data we still need decl specs.
Check out the docs to learn more about the limitations of CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html#prop_tgt:WINDOWS_EXPORT_ALL_SYMBOLS
@@ -36,9 +36,9 @@ endif()
For all compiled sources from outside the library (i.e. files which include lvgl headers) we need to use dllimport.
We can do this by using CMakes INTERFACE and PRIVATE keyword.
]]
if (MSVC)
target_compile_definitions(lvgl
INTERFACE LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllimport\)
PRIVATE LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllexport\)
)
if(MSVC AND BUILD_SHARED_LIBS)
target_compile_definitions(
lvgl
INTERFACE "LV_ATTRIBUTE_EXTERN_DATA=__declspec(dllimport)"
PRIVATE "LV_ATTRIBUTE_EXTERN_DATA=__declspec(dllexport)")
endif()