1- cmake_minimum_required (VERSION 3.5 )
1+ cmake_minimum_required (VERSION 3.18 )
22
33project (fmusim-gui VERSION 0.1 LANGUAGES C CXX)
44
@@ -10,14 +10,16 @@ set(CMAKE_CXX_STANDARD 17)
1010set (CMAKE_CXX_STANDARD_REQUIRED ON )
1111
1212find_package (QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
13- set (CVODE_DIR ${CMAKE_SOURCE_DIR} /build /cvode-x86_64-windows/install )
14- set (LIBXML2_DIR ${CMAKE_SOURCE_DIR} /build /libxml2-x86_64-windows/install )
15- set (ZLIB_DIR ${CMAKE_SOURCE_DIR} /build /zlib-x86_64-windows/install )
16-
17- set (ZLIB_SRC_DIR ${CMAKE_SOURCE_DIR} /build /zlib-1.3.1)
18-
1913find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
20- find_package (Qt6 REQUIRED COMPONENTS WebEngineWidgets)
14+ if (QT_VERSION_MAJOR GREATER_EQUAL 6)
15+ find_package (Qt6 REQUIRED COMPONENTS WebEngineWidgets)
16+ endif ()
17+
18+ set_source_files_properties (
19+ ${ZLIB_SRC_DIR} /contrib/minizip/ioapi.c
20+ ${ZLIB_SRC_DIR} /contrib/minizip/unzip.c
21+ ${ZLIB_SRC_DIR} /contrib/minizip/iowin32.c
22+ PROPERTIES GENERATED 1)
2123
2224set (PROJECT_SOURCES
2325 main.cpp
@@ -31,14 +33,42 @@ set(PROJECT_SOURCES
3133 ../fmusim/miniunzip.c
3234 ${ZLIB_SRC_DIR} /contrib/minizip/unzip.c
3335 ${ZLIB_SRC_DIR} /contrib/minizip/ioapi.c
34- ${ZLIB_SRC_DIR} /contrib/minizip/iowin32.c
3536 ../fmusim/FMIModelDescription.c
3637 ../fmusim/FMIModelDescription.h
3738 ../fmusim/FMIBuildDescription.c
3839 ../fmusim/FMIBuildDescription.h
3940 ../src/structured_variable_name.tab.c
4041 ../src/structured_variable_name.yy.c
4142)
43+ if (WIN32 )
44+ set (PROJECT_SOURCES ${PROJECT_SOURCES} ${ZLIB_SRC_DIR} /contrib/minizip/iowin32.c)
45+ endif ()
46+
47+ if (WIN32 )
48+ set (PROJECT_LIBRARIES
49+ ${EXTERNAL_BASE_DIR} /lib/libxml2s.lib
50+ ${EXTERNAL_BASE_DIR} /lib/zlibstatic.lib
51+ ${EXTERNAL_BASE_DIR} /lib/sundials_cvode_static.lib
52+ ${EXTERNAL_BASE_DIR} /lib/sundials_core_static.lib
53+ )
54+ elseif (UNIX AND NOT APPLE )
55+ set (PROJECT_LIBRARIES
56+ ${EXTERNAL_BASE_DIR} /lib/libxml2.a
57+ ${EXTERNAL_BASE_DIR} /lib/libz.a
58+ ${EXTERNAL_BASE_DIR} /lib/libsundials_cvode.a
59+ ${EXTERNAL_BASE_DIR} /lib/libsundials_core.a
60+ ${CMAKE_DL_LIBS}
61+ m
62+ )
63+ else ()
64+ set (PROJECT_LIBRARIES
65+ ${EXTERNAL_BASE_DIR} /lib/libxml2.a
66+ ${EXTERNAL_BASE_DIR} /lib/libz.a
67+ ${EXTERNAL_BASE_DIR} /lib/libsundials_cvode.a
68+ ${EXTERNAL_BASE_DIR} /lib/libsundials_core.a
69+ )
70+ endif ()
71+
4272
4373if (${QT_VERSION_MAJOR} GREATER_EQUAL 6)
4474 qt_add_executable(fmusim-gui
@@ -109,26 +139,27 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
109139 resources/build /build .qrc
110140 )
111141
112- target_include_directories (fmusim-gui PRIVATE
113- ../include
114- ../fmusim
115- ${LIBXML2_DIR} /include /libxml2
116- ${ZLIB_DIR} /include
117- ${ZLIB_SRC_DIR} /contrib/minizip
118- ${CVODE_DIR} /include
119- )
142+ add_dependencies (fmusim-gui zlib xml2 cvcode)
120143
121- target_compile_definitions (fmusim-gui PRIVATE
122- YY_NO_UNISTD_H
123- )
144+ target_include_directories (fmusim-gui PRIVATE
145+ ../include
146+ ../fmusim
147+ ${EXTERNAL_BASE_DIR} /include
148+ ${EXTERNAL_BASE_DIR} /include /libxml2
149+ ${ZLIB_SRC_DIR} /contrib/minizip
150+ ${ZLIB_SRC_DIR} /contrib/minizip
151+ )
124152
125- target_link_libraries (fmusim-gui PRIVATE
126- Qt6::WebEngineWidgets
127- ${LIBXML2_DIR} /lib/libxml2.lib
128- ${ZLIB_DIR} /lib/zlib.lib
129- ${CVODE_DIR} /lib/sundials_cvode_static.lib
130- ${CVODE_DIR} /lib/sundials_core_static.lib
131- )
153+ if (WIN32 )
154+ target_compile_definitions (fmusim-gui PRIVATE
155+ YY_NO_UNISTD_H
156+ )
157+ endif ()
158+
159+ target_link_libraries (fmusim-gui PRIVATE
160+ Qt6::WebEngineWidgets
161+ ${PROJECT_LIBRARIES}
162+ )
132163
133164# Define target properties for Android with Qt 6 as:
134165# set_property(TARGET fmusim-gui APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
@@ -171,6 +202,6 @@ install(TARGETS fmusim-gui
171202 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
172203)
173204
174- if (QT_VERSION_MAJOR EQUAL 6)
205+ if (QT_VERSION_MAJOR GREATER_EQUAL 6)
175206 qt_finalize_executable(fmusim-gui)
176207endif ()
0 commit comments