@@ -40,29 +40,12 @@ function(generateFMU modelIdentifier)
4040 endif ()
4141
4242
43- # create an internal object library from provided sources
44- set (model_objects_target "${modelIdentifier} _fmu_objects" )
45-
46- add_library (${model_objects_target} OBJECT ${FMU_SOURCES} )
47- target_include_directories (${model_objects_target} PUBLIC "${_fmu4cpp_root} /export/include" )
48- # apply user-provided include dirs to the object target
49- if (FMU_INCLUDE_DIRS)
50- target_include_directories (${model_objects_target} PRIVATE ${FMU_INCLUDE_DIRS} )
51- endif ()
52- # apply user-provided link targets to the object target
53- if (FMU_LINK_TARGETS)
54- target_link_libraries (${model_objects_target} PRIVATE ${FMU_LINK_TARGETS} )
55- endif ()
56- # apply user-provided compile definitions to the object target
57- if (FMU_COMPILE_DEFINITIONS)
58- target_compile_definitions (${model_objects_target} PRIVATE ${FMU_COMPILE_DEFINITIONS} )
59- endif ()
60- set_target_properties (${model_objects_target} PROPERTIES POSITION_INDEPENDENT_CODE ON )
61-
62-
6343 foreach (fmiVersion IN LISTS FMU_FMI_VERSIONS)
6444
65- # versioned shared library target built from object libraries
45+ set (fmuOutputDir "${fmuResultDir} /${fmiVersion} " )
46+ set (modelOutputDir "${fmuOutputDir} /${modelIdentifier} " )
47+ set (binaryOutputDir "$<1:${modelOutputDir} /binaries /${TARGET_PLATFORM} >" )
48+
6649 set (versionTarget "${modelIdentifier} _${fmiVersion} " )
6750
6851 set (FMU4CPP_MODEL_IDENTIFIER "${versionTarget} " )
@@ -75,37 +58,49 @@ function(generateFMU modelIdentifier)
7558
7659 _getTargetPlatform (${fmiVersion} )
7760
61+ set (VERSIONS_DEFS "" )
7862 if (fmiVersion STREQUAL "fmi2" )
63+ list (APPEND VERSION_DEFS "FMI2" )
64+ target_compile_definitions (fmu4cpp_fmi2 PUBLIC "FMI2" )
7965 list (APPEND VERSION_OBJECTS "$<TARGET_OBJECTS :fmu4cpp_fmi2 >" )
80- list (APPEND VERSION_DEFS FMI2)
8166 elseif (fmiVersion STREQUAL "fmi3" )
67+ list (APPEND VERSION_DEFS "FMI3" )
68+ target_compile_definitions (fmu4cpp_fmi3 PUBLIC "FMI3" )
8269 list (APPEND VERSION_OBJECTS "$<TARGET_OBJECTS :fmu4cpp_fmi3 >" )
83- list (APPEND VERSION_DEFS FMI3)
8470 endif ()
8571
86- set (fmuOutputDir "${fmuResultDir} /${fmiVersion} " )
87- set (modelOutputDir "${fmuOutputDir} /${modelIdentifier} " )
88- set (binaryOutputDir "$<1:${modelOutputDir} /binaries /${TARGET_PLATFORM} >" )
89-
9072 add_library (${versionTarget} SHARED
9173 "$<TARGET_OBJECTS :fmu4cpp_base >"
92- "$< TARGET_OBJECTS : ${model_objects_target} > "
74+ "${FMU_SOURCES} "
9375 "${VERSION_OBJECTS} "
9476 )
95- target_include_directories (${versionTarget} PRIVATE "${_fmu4cpp_root} /export/include" )
96- target_compile_definitions (${versionTarget} PRIVATE ${VERSION_DEFS} )
77+ target_include_directories (${versionTarget}
78+ PRIVATE
79+ "${_fmu4cpp_root} /export/include"
80+ "${FMU_INCLUDE_DIRS} "
81+ )
82+
83+ target_compile_definitions (${versionTarget}
84+ PUBLIC
85+ ${VERSION_DEFS}
86+ ${FMU_COMPILE_DEFINITIONS}
87+ )
88+
9789
98- # link user-provided link targets (must be propagated to the final shared lib)
9990 if (FMU_LINK_TARGETS)
91+ target_link_libraries (${versionTarget} PRIVATE ${FMU_LINK_TARGETS} )
10092 _bundle_link_libraries ()
10193 endif ()
10294
103- # if user provided compile definitions, also ensure final target sees them (optional)
104- if (FMU_COMPILE_DEFINITIONS)
105- target_compile_definitions (${model_objects_target} PRIVATE ${FMU_COMPILE_DEFINITIONS} )
106- target_compile_definitions (${versionTarget} PRIVATE ${FMU_COMPILE_DEFINITIONS} )
95+ if (FMU_WITH_SOURCES)
96+ if (fmiVersion STREQUAL "fmi2" )
97+ message (WARNING "[generateFMU-fmi2] FMU_WITH_SOURCES is not supported for fmi2; skipping source inclusion for model '${modelIdentifier} '" )
98+ else ()
99+ _include_sources_in_fmu ()
100+ endif ()
107101 endif ()
108102
103+
109104 if (WIN32 )
110105 set_target_properties (${versionTarget}
111106 PROPERTIES
@@ -119,13 +114,6 @@ function(generateFMU modelIdentifier)
119114 )
120115 endif ()
121116
122- if (FMU_WITH_SOURCES)
123- if (fmiVersion STREQUAL "fmi2" )
124- message (WARNING "[generateFMU-fmi2] FMU_WITH_SOURCES is not supported for fmi2; skipping source inclusion for model '${modelIdentifier} '" )
125- else ()
126- _include_sources_in_fmu ()
127- endif ()
128- endif ()
129117
130118 # Generate modelDescription.xml
131119 add_custom_command (TARGET ${versionTarget} POST_BUILD
0 commit comments