@@ -13,34 +13,27 @@ cmake_minimum_required(VERSION 3.15)
1313# FEBio::FEBioRVE
1414# FEBio::FECore
1515# FEBio::FEImgLib
16- # FEBio::NumCore
17- #
18- # FEBio::FEBioPlot (static)
19- # FEBio::FEBioTest (static)
20- # FEBio::FEBioXML (static)
21- # FEBio::XML (static)
16+ # FEBio::FEBioPlot
17+ # FEBio::FEBioTest
18+ # FEBio::FEBioXML
2219# ------------------------------------------------------------------------------
2320
2421# ------------------------------------------------------------------------------
2522# Libraries
2623# ------------------------------------------------------------------------------
2724
28- set (_FEBIO_SHARED_LIBS
29- FEAMR
30- FEBioLib
25+ set (_FEBIO_LIBS
26+ FECore
3127 FEBioMech
32- FEBioOpt
28+ FEBioMix
29+ FEBioFluid
3330 FEBioRVE
34- FECore
35- FEImgLib
36- NumCore
37- )
38-
39- set (_FEBIO_STATIC_LIBS
4031 FEBioPlot
41- FEBioTest
4232 FEBioXML
43- XML
33+ FEBioLib
34+ FEAMR
35+ FEBioOpt
36+ FEImgLib
4437)
4538
4639# ------------------------------------------------------------------------------
@@ -64,16 +57,27 @@ if(_FEBIO_IS_SOURCE_TREE)
6457 # This is the default build output directory
6558 set (_FEBIO_LIB_DIR "${_FEBIO_PREFIX} /build" )
6659
67- # Try to find the build directory by searching for febioxml
60+ # Try to find the build directory by searching for fecore
6861 file (GLOB _MATCHED_DIRS LIST_DIRECTORIES true "${_FEBIO_PREFIX} /*build*" )
6962
7063 if (_MATCHED_DIRS)
64+
65+ if (WIN32 )
66+ set (_LIB_NAME "fecore.lib" )
67+ elseif (APPLE )
68+ set (_LIB_NAME "libfecore.dylib" )
69+ else ()
70+ set (_LIB_NAME "libfecore.so" )
71+ endif ()
72+
73+
7174 foreach (dir IN LISTS _MATCHED_DIRS)
72- find_library (_test
73- NAMES febioxml
75+ find_file (_test
76+ NAMES ${_LIB_NAME}
7477 PATHS ${dir}
7578 PATH_SUFFIXES lib lib/Release Release/lib Debug/lib lib/Debug
76- NO_DEFAULT_PATH )
79+ NO_DEFAULT_PATH
80+ )
7781
7882 if (_test)
7983 set (_FEBIO_LIB_DIR "${dir} " )
@@ -96,9 +100,10 @@ endif()
96100# Helper to locate libraries
97101# ------------------------------------------------------------------------------
98102
99- function (_febio_find_library out_release out_debug out_fallback libname is_static )
103+ function (_febio_find_library out_release out_debug out_min_size out_rel_deb out_fallback libname )
100104 string (TOLOWER ${libname} _lib_lc)
101105
106+ # Find release version
102107 find_library (_TEMP
103108 NAMES ${_lib_lc}
104109 PATHS ${_FEBIO_LIB_DIR}
@@ -112,6 +117,7 @@ function(_febio_find_library out_release out_debug out_fallback libname is_stati
112117 endif ()
113118 unset (_TEMP CACHE )
114119
120+ # Find debug version
115121 find_library (_TEMP
116122 NAMES ${_lib_lc}
117123 PATHS ${_FEBIO_LIB_DIR}
@@ -125,6 +131,35 @@ function(_febio_find_library out_release out_debug out_fallback libname is_stati
125131 endif ()
126132 unset (_TEMP CACHE )
127133
134+ # Find min size version
135+ find_library (_TEMP
136+ NAMES ${_lib_lc}
137+ PATHS ${_FEBIO_LIB_DIR}
138+ PATH_SUFFIXES lib lib/MinSizeRel MinSizeRel/lib MinSizeRel
139+ NO_DEFAULT_PATH )
140+
141+ string (REGEX MATCH "MinSizeRel" _is_min_size ${_TEMP} )
142+
143+ if (_is_min_size)
144+ set (${out_min_size} "${_TEMP} " PARENT_SCOPE )
145+ endif ()
146+ unset (_TEMP CACHE )
147+
148+ # Find rel with deb info version
149+ find_library (_TEMP
150+ NAMES ${_lib_lc}
151+ PATHS ${_FEBIO_LIB_DIR}
152+ PATH_SUFFIXES lib lib/RelWithDebInfo RelWithDebInfo/lib RelWithDebInfo
153+ NO_DEFAULT_PATH )
154+
155+ string (REGEX MATCH "RelWithDebInfo" _is_rel_deb ${_TEMP} )
156+
157+ if (_is_rel_deb)
158+ set (${out_rel_deb} "${_TEMP} " PARENT_SCOPE )
159+ endif ()
160+ unset (_TEMP CACHE )
161+
162+ # Fallback: find any version
128163 find_library (_TEMP
129164 NAMES ${_lib_lc}
130165 PATHS ${_FEBIO_LIB_DIR}
@@ -139,27 +174,18 @@ endfunction()
139174# Create imported targets
140175# ------------------------------------------------------------------------------
141176
142- foreach (lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS )
177+ foreach (lib IN LISTS _FEBIO_LIBS )
143178 if (TARGET "FEBio::${lib} " )
144179 continue ()
145180 endif ()
146181
147- list (FIND _FEBIO_STATIC_LIBS "${lib} " _static_index)
148- if (_static_index GREATER -1)
149- set (_lib_type STATIC)
150- set (_is_static TRUE )
151- else ()
152- set (_lib_type SHARED)
153- set (_is_static FALSE )
154- endif ()
155-
156- add_library ("FEBio::${lib} " ${_lib_type} IMPORTED )
182+ add_library ("FEBio::${lib} " SHARED IMPORTED )
157183
158184 set_target_properties ("FEBio::${lib} " PROPERTIES
159185 INTERFACE_INCLUDE_DIRECTORIES "${_FEBIO_INCLUDE_DIR} "
160186 )
161187
162- _febio_find_library (_rel _dbg _fallback "${lib} " " ${_is_static } " )
188+ _febio_find_library (_rel _dbg _min_size _rel_deb _fallback "${lib} " )
163189
164190 if (_rel)
165191 set_target_properties ("FEBio::${lib} " PROPERTIES
@@ -170,6 +196,7 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
170196 IMPORTED_IMPLIB_RELEASE "${_rel} "
171197 )
172198
199+ # Use release configuration as default in case not all are found
173200 set_target_properties ("FEBio::${lib} " PROPERTIES
174201 IMPORTED_LOCATION "${_rel} "
175202 )
@@ -186,6 +213,34 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
186213 set_target_properties ("FEBio::${lib} " PROPERTIES
187214 IMPORTED_IMPLIB_DEBUG "${_dbg} "
188215 )
216+
217+ # Use debug configuration as default if release not found
218+ if (NOT _rel)
219+ set_target_properties ("FEBio::${lib} " PROPERTIES
220+ IMPORTED_LOCATION "${_dbg} "
221+ )
222+ set_target_properties ("FEBio::${lib} " PROPERTIES
223+ IMPORTED_IMPLIB "${_dbg} "
224+ )
225+ endif ()
226+ endif ()
227+
228+ if (_min_size)
229+ set_target_properties ("FEBio::${lib} " PROPERTIES
230+ IMPORTED_LOCATION_MINSIZEREL "${_min_size} "
231+ )
232+ set_target_properties ("FEBio::${lib} " PROPERTIES
233+ IMPORTED_IMPLIB_MINSIZEREL "${_min_size} "
234+ )
235+ endif ()
236+
237+ if (_rel_deb)
238+ set_target_properties ("FEBio::${lib} " PROPERTIES
239+ IMPORTED_LOCATION_RELWITHDEBINFO "${_rel_deb} "
240+ )
241+ set_target_properties ("FEBio::${lib} " PROPERTIES
242+ IMPORTED_IMPLIB_RELWITHDEBINFO "${_rel_deb} "
243+ )
189244 endif ()
190245
191246 if (_fallback)
@@ -213,9 +268,9 @@ foreach(lib IN LISTS _FEBIO_SHARED_LIBS _FEBIO_STATIC_LIBS)
213268
214269endforeach ()
215270
216- unset (_FEBIO_SHARED_LIBS)
217- unset (_FEBIO_STATIC_LIBS)
271+ unset (_FEBIO_LIBS)
218272unset (_FEBIO_PREFIX)
219273unset (_FEBIO_INCLUDE_DIR)
274+ unset (_FEBIO_LIB_DIR)
220275
221276set (FEBio_FOUND TRUE )
0 commit comments