mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-28 22:30:49 +08:00
fix(cmake): declspecs usage for msvc (#5190)
This commit is contained in:
+14
-5
@@ -18,10 +18,19 @@ else()
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/env_support/cmake/custom.cmake)
|
||||
endif()
|
||||
|
||||
#[[
|
||||
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
|
||||
|
||||
For all compiled sources within the library (i.e. basically all lvgl files) we need to use dllexport.
|
||||
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)
|
||||
if (BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(lvgl PUBLIC LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllimport\))
|
||||
else()
|
||||
target_compile_definitions(lvgl PUBLIC LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllexport\))
|
||||
endif()
|
||||
target_compile_definitions(lvgl
|
||||
INTERFACE LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllimport\)
|
||||
PRIVATE LV_ATTRIBUTE_EXTERN_DATA=__declspec\(dllexport\)
|
||||
)
|
||||
endif()
|
||||
Reference in New Issue
Block a user