11
2- function (generateFMU modelIdentifier resourceFolder )
2+ function (generateFMU modelIdentifier fmiVersion )
3+
4+ set (options)
5+ set (oneValueArgs RESOURCE_FOLDER)
6+ set (multiValueArgs)
7+ cmake_parse_arguments (FMU "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
8+
9+ if (NOT FMU_RESOURCE_FOLDER)
10+ set (FMU_RESOURCE_FOLDER "" )
11+ endif ()
12+
13+ target_sources (${modelIdentifier} PRIVATE "$<TARGET_OBJECTS :fmu4cpp_base >" )
14+
15+ set (TARGET_PLATFORM)
16+ if (fmiVersion STREQUAL "fmi2" )
17+
18+ if ("${CMAKE_SIZEOF_VOID_P} " STREQUAL "8" )
19+ set (BITNESS 64)
20+ else ()
21+ set (BITNESS 32)
22+ endif ()
23+
24+ if (WIN32 )
25+ set (TARGET_PLATFORM win${BITNESS} )
26+ elseif (APPLE )
27+ set (TARGET_PLATFORM darwin${BITNESS} )
28+ else ()
29+ set (TARGET_PLATFORM linux ${BITNESS} )
30+ endif ()
31+
32+ target_compile_definitions ("${modelIdentifier} " PRIVATE FMI2 )
33+ target_sources (${modelIdentifier} PRIVATE "$<TARGET_OBJECTS :fmu4cpp_fmi2 >" )
34+ elseif (fmiVersion STREQUAL "fmi3" )
35+
36+ set (TARGET_PLATFORM "x86" )
37+ if ("${CMAKE_SIZEOF_VOID_P} " STREQUAL "8" )
38+ set (TARGET_PLATFORM "${TARGET_PLATFORM} _64" )
39+ endif ()
40+
41+ if (WIN32 )
42+ set (TARGET_PLATFORM ${TARGET_PLATFORM} -windows)
43+ elseif (APPLE )
44+ set (TARGET_PLATFORM ${TARGET_PLATFORM} -darwin)
45+ else ()
46+ set (TARGET_PLATFORM ${TARGET_PLATFORM} -linux )
47+ endif ()
48+
49+ target_compile_definitions ("${modelIdentifier} " PRIVATE FMI3 )
50+ target_sources (${modelIdentifier} PRIVATE "$<TARGET_OBJECTS :fmu4cpp_fmi3 >" )
51+
52+ else ()
53+ message (FATAL_ERROR "Unknown FMI version: ${fmiVersion} . Supported versions are 'fmi2' and 'fmi3'." )
54+ endif ()
355
4- target_sources (${modelIdentifier} PRIVATE "$<TARGET_OBJECTS :fmu4cpp >" )
556 target_include_directories ("${modelIdentifier} " PRIVATE "${PROJECT_SOURCE_DIR} /export/include" )
657 target_compile_definitions ("${modelIdentifier} " PRIVATE FMU4CPP_MODEL_IDENTIFIER= "${modelIdentifier} " )
758
@@ -26,17 +77,17 @@ function(generateFMU modelIdentifier resourceFolder)
2677 WORKING_DIRECTORY "${CMAKE_BINARY_DIR} "
2778 COMMAND descriptionGenerator ${modelIdentifier} "${outputDir} /$<TARGET_FILE_NAME :${modelIdentifier} >" )
2879
29- if (resourceFolder STREQUAL "" )
80+ if (FMU_RESOURCE_FOLDER STREQUAL "" )
3081 add_custom_command (TARGET ${modelIdentifier} POST_BUILD
3182 WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /${modelIdentifier} "
3283 COMMAND ${CMAKE_COMMAND} -E tar "c" "${modelIdentifier} .fmu" --format=zip
3384 "${CMAKE_BINARY_DIR} /${modelIdentifier} /binaries"
3485 "${CMAKE_BINARY_DIR} /${modelIdentifier} /modelDescription.xml" )
3586
3687 else ()
37- message ("[generateFMU] Using resourceFolder=${resourceFolder } for model with identifier='${modelIdentifier} '" )
88+ message ("[generateFMU] Using resourceFolder=${FMU_RESOURCE_FOLDER } for model with identifier='${modelIdentifier} '" )
3889
39- file (COPY "${resourceFolder } /" DESTINATION "${CMAKE_BINARY_DIR} /${modelIdentifier} /resources" )
90+ file (COPY "${FMU_RESOURCE_FOLDER } /" DESTINATION "${CMAKE_BINARY_DIR} /${modelIdentifier} /resources" )
4091
4192 add_custom_command (TARGET ${modelIdentifier} POST_BUILD
4293 WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /${modelIdentifier} "
0 commit comments