CMakeLists.txt 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. ####################################################################################################################
  2. ####################################################################################################################
  3. ####################################################################################################################
  4. # General
  5. ####################################################################################################################
  6. ####################################################################################################################
  7. ####################################################################################################################
  8. ##########################################################
  9. # Basic
  10. ##########################################################
  11. cmake_minimum_required(VERSION 3.30)
  12. project(ls-std VERSION 2026.1.0.0)
  13. set(MODULE_NAME_BOXING ls-std-boxing)
  14. set(MODULE_NAME_CORE ls-std-core)
  15. set(MODULE_NAME_ENCODING ls-std-encoding)
  16. set(MODULE_NAME_EVENT ls-std-event)
  17. set(MODULE_NAME_IO ls-std-io)
  18. set(MODULE_NAME_TIME ls-std-time)
  19. set(GOOGLE_TEST_MODULE googletest-1.15.2)
  20. set(CLI_NAME_BASE64 cli-base64)
  21. ##########################################################
  22. # Options
  23. ##########################################################
  24. option(LS_STD_BUILD_WITH_TESTS "Build project with tests..." OFF)
  25. option(LS_STD_BUILD_WITH_SUPPORTED_COMPILER "Build project with supported compiler only..." ON)
  26. option(LS_STD_BUILD_STATIC "Build ls-std static library..." ON)
  27. option(LS_STD_BUILD_SHARED "Build ls-std shared library..." OFF)
  28. option(LS_STD_BUILD_WITH_JNI "Build ls-std shared library with JNI..." OFF)
  29. set(TARGET_COUNTER 0)
  30. if (${LS_STD_BUILD_STATIC})
  31. math(EXPR TARGET_COUNTER "${TARGET_COUNTER} + 1")
  32. set(GOAL "static library")
  33. endif ()
  34. if (${LS_STD_BUILD_SHARED})
  35. math(EXPR TARGET_COUNTER "${TARGET_COUNTER} + 1")
  36. set(GOAL "shared library")
  37. endif ()
  38. message("${PROJECT_NAME}: [Goal] ${GOAL}")
  39. if (TARGET_COUNTER GREATER 1)
  40. message("${PROJECT_NAME}: [Error] only one goal supported at the same time!")
  41. return()
  42. endif ()
  43. if (TARGET_COUNTER EQUAL 0)
  44. message("${PROJECT_NAME}: [Error] no goal selected!")
  45. return()
  46. endif ()
  47. ##########################################################
  48. # JNI flag check
  49. ##########################################################
  50. if (${LS_STD_BUILD_WITH_JNI})
  51. if (${LS_STD_BUILD_SHARED})
  52. message("${PROJECT_NAME}: build with JNI support...")
  53. else ()
  54. message("${PROJECT_NAME}: [Error] JNI support requires shared build goal!")
  55. return()
  56. endif ()
  57. endif ()
  58. ##########################################################
  59. # Compiler Settings
  60. ##########################################################
  61. message("${PROJECT_NAME}: Setting compiler flags...")
  62. set(CMAKE_CXX_STANDARD 17)
  63. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  64. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  65. ##########################################################
  66. # Compiler Support
  67. ##########################################################
  68. if (${LS_STD_BUILD_WITH_SUPPORTED_COMPILER})
  69. message("${PROJECT_NAME}: build with compiler support...")
  70. # define supported compilers
  71. if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC OR
  72. ${CMAKE_CXX_COMPILER_ID} STREQUAL GNU OR
  73. ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang OR
  74. ${CMAKE_CXX_COMPILER_ID} STREQUAL AppleClang)
  75. message("${PROJECT_NAME}: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} is supported...")
  76. else ()
  77. message("${PROJECT_NAME}: [Error] ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} is not supported... terminated!")
  78. return()
  79. endif ()
  80. endif ()
  81. ######################################################
  82. # Find Packages
  83. ######################################################
  84. if (${LS_STD_BUILD_WITH_JNI})
  85. if (DEFINED ENV{JAVA_HOME})
  86. message("JAVA_HOME found in '$ENV{JAVA_HOME}' location...")
  87. else ()
  88. message("[Error] JAVA_HOME not found!")
  89. return()
  90. endif ()
  91. message("${PROJECT_NAME}: finding JNI package in '$ENV{JAVA_HOME}'...")
  92. find_package(JNI REQUIRED)
  93. endif ()
  94. ######################################################
  95. # Include Directories
  96. ######################################################
  97. message("${PROJECT_NAME}: Adding include directories...")
  98. if (${LS_STD_BUILD_WITH_JNI})
  99. include_directories(${JAVA_INCLUDE_PATH})
  100. include_directories(${JAVA_INCLUDE_PATH2})
  101. include_directories(${JAVA_AWT_INCLUDE_PATH})
  102. endif ()
  103. if (${LS_STD_BUILD_WITH_TESTS})
  104. include_directories(${CMAKE_CURRENT_SOURCE_DIR}/test)
  105. include_directories(${CMAKE_CURRENT_LIST_DIR}/test/lib/${GOOGLE_TEST_MODULE}/googletest/include)
  106. include_directories(${CMAKE_CURRENT_LIST_DIR}/test/lib/${GOOGLE_TEST_MODULE}/googlemock/include)
  107. endif ()
  108. include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
  109. ######################################################
  110. # Add Other CMake Dependencies
  111. ######################################################
  112. message("${PROJECT_NAME}: Adding additional cmake dependencies...")
  113. if (${LS_STD_BUILD_WITH_TESTS})
  114. add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/test/lib/${GOOGLE_TEST_MODULE})
  115. endif ()
  116. ####################################################################################################################
  117. ####################################################################################################################
  118. ####################################################################################################################
  119. # Source Files Modularization
  120. ####################################################################################################################
  121. ####################################################################################################################
  122. ####################################################################################################################
  123. include(cmake/SourceFiles.cmake)
  124. set(SOURCE_FILES_BOXING)
  125. collect_boxing_module_source_files(SOURCE_FILES_BOXING)
  126. set(SOURCE_FILES_CORE)
  127. collect_core_module_source_files(SOURCE_FILES_CORE)
  128. set(SOURCE_FILES_CORE_JNI)
  129. collect_core_jni_module_source_files(SOURCE_FILES_CORE_JNI)
  130. set(SOURCE_FILES_ENCODING)
  131. collect_encoding_module_source_files(SOURCE_FILES_ENCODING)
  132. set(SOURCE_FILES_EVENT)
  133. collect_event_module_source_files(SOURCE_FILES_EVENT)
  134. set(SOURCE_FILES_IO)
  135. collect_io_module_source_files(SOURCE_FILES_IO)
  136. set(SOURCE_FILES_TIME)
  137. collect_time_module_source_files(SOURCE_FILES_TIME)
  138. set(SOURCE_FILES_LINUX_TIME)
  139. set(SOURCE_FILES_WINDOWS_TIME)
  140. if (UNIX OR APPLE)
  141. message("${MODULE_NAME_TIME}: Add UNIX files for time module...")
  142. set(SOURCE_FILES_LINUX_TIME
  143. ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/time/system-time/PosixClock.cpp)
  144. else (WIN32)
  145. message("${MODULE_NAME_TIME}: Add Windows files for time module...")
  146. set(SOURCE_FILES_WINDOWS_TIME
  147. ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/time/system-time/WindowsClock.cpp)
  148. endif ()
  149. set(SOURCE_FILES_TIME_JNI)
  150. collect_time_jni_module_source_files(SOURCE_FILES_TIME_JNI)
  151. ####################################################################################################################
  152. ####################################################################################################################
  153. ####################################################################################################################
  154. # Unit Test Files Modularization
  155. ####################################################################################################################
  156. ####################################################################################################################
  157. ####################################################################################################################
  158. if (${LS_STD_BUILD_WITH_TESTS})
  159. include(cmake/TestFiles.cmake)
  160. set(UNIT_TEST_FILES_BOXING)
  161. collect_boxing_module_test_files(UNIT_TEST_FILES_BOXING)
  162. set(UNIT_TEST_FILES_CORE)
  163. collect_core_module_test_files(UNIT_TEST_FILES_CORE)
  164. set(UNIT_TEST_FILES_CORE_JNI)
  165. collect_core_jni_module_test_files(UNIT_TEST_FILES_CORE_JNI)
  166. set(UNIT_TEST_FILES_ENCODING)
  167. collect_encoding_module_test_files(UNIT_TEST_FILES_ENCODING)
  168. set(UNIT_TEST_FILES_EVENT)
  169. collect_event_module_test_files(UNIT_TEST_FILES_EVENT)
  170. set(UNIT_TEST_FILES_IO)
  171. collect_io_module_test_files(UNIT_TEST_FILES_IO)
  172. set(UNIT_TEST_FILES_SERIALIZATION)
  173. collect_serialization_module_test_files(UNIT_TEST_FILES_SERIALIZATION)
  174. set(UNIT_TEST_FILES_TIME)
  175. collect_time_module_test_files(UNIT_TEST_FILES_TIME)
  176. endif ()
  177. ####################################################################################################################
  178. ####################################################################################################################
  179. ####################################################################################################################
  180. # Unit Test Suite Builds
  181. ####################################################################################################################
  182. ####################################################################################################################
  183. ####################################################################################################################
  184. ##########################################################
  185. # Unit Build Tests (boxing)
  186. ##########################################################
  187. if (${LS_STD_BUILD_WITH_TESTS})
  188. message("${MODULE_NAME_BOXING}: Building unit tests...")
  189. add_executable(${MODULE_NAME_BOXING}-unit-test ${UNIT_TEST_FILES_BOXING})
  190. endif ()
  191. ##########################################################
  192. # Unit Build Tests (core)
  193. ##########################################################
  194. if (${LS_STD_BUILD_WITH_TESTS})
  195. if (${LS_STD_BUILD_WITH_JNI})
  196. message("${MODULE_NAME_CORE}: Building unit tests with JNI support...")
  197. add_executable(${MODULE_NAME_CORE}-unit-test ${UNIT_TEST_FILES_CORE} ${UNIT_TEST_FILES_CORE_JNI})
  198. else ()
  199. message("${MODULE_NAME_CORE}: Building unit tests...")
  200. add_executable(${MODULE_NAME_CORE}-unit-test ${UNIT_TEST_FILES_CORE})
  201. endif ()
  202. endif ()
  203. ##########################################################
  204. # Unit Build Tests (encoding)
  205. ##########################################################
  206. if (${LS_STD_BUILD_WITH_TESTS})
  207. message("${MODULE_NAME_ENCODING}: Building unit tests...")
  208. add_executable(${MODULE_NAME_ENCODING}-unit-test ${UNIT_TEST_FILES_ENCODING})
  209. endif ()
  210. ##########################################################
  211. # Unit Build Tests (event)
  212. ##########################################################
  213. if (${LS_STD_BUILD_WITH_TESTS})
  214. message("${MODULE_NAME_EVENT}: Building unit tests...")
  215. add_executable(${MODULE_NAME_EVENT}-unit-test ${UNIT_TEST_FILES_EVENT})
  216. endif ()
  217. ##########################################################
  218. # Unit Build Tests (io)
  219. ##########################################################
  220. if (${LS_STD_BUILD_WITH_TESTS})
  221. message("${MODULE_NAME_IO}: Building unit tests...")
  222. add_executable(${MODULE_NAME_IO}-unit-test
  223. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  224. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  225. ${UNIT_TEST_FILES_IO})
  226. endif ()
  227. ##########################################################
  228. # Unit Build Tests (time)
  229. ##########################################################
  230. if (${LS_STD_BUILD_WITH_TESTS})
  231. message("${MODULE_NAME_TIME}: Building unit tests...")
  232. add_executable(${MODULE_NAME_TIME}-unit-test ${UNIT_TEST_FILES_TIME})
  233. endif ()
  234. ##########################################################
  235. # Unit Build Tests (all)
  236. ##########################################################
  237. if (${LS_STD_BUILD_WITH_TESTS})
  238. if (${LS_STD_BUILD_WITH_JNI})
  239. message("${PROJECT_NAME}: Building unit tests with JNI support...")
  240. add_executable(${PROJECT_NAME}-unit-test
  241. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  242. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  243. ${UNIT_TEST_FILES_BOXING}
  244. ${UNIT_TEST_FILES_CORE}
  245. ${UNIT_TEST_FILES_CORE_JNI}
  246. ${UNIT_TEST_FILES_ENCODING}
  247. ${UNIT_TEST_FILES_EVENT}
  248. ${UNIT_TEST_FILES_IO}
  249. ${UNIT_TEST_FILES_SERIALIZATION}
  250. ${UNIT_TEST_FILES_TIME})
  251. else ()
  252. message("${PROJECT_NAME}: Building unit tests...")
  253. add_executable(${PROJECT_NAME}-unit-test
  254. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  255. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  256. ${UNIT_TEST_FILES_BOXING}
  257. ${UNIT_TEST_FILES_CORE}
  258. ${UNIT_TEST_FILES_ENCODING}
  259. ${UNIT_TEST_FILES_EVENT}
  260. ${UNIT_TEST_FILES_IO}
  261. ${UNIT_TEST_FILES_SERIALIZATION}
  262. ${UNIT_TEST_FILES_TIME})
  263. endif ()
  264. endif ()
  265. ####################################################################################################################
  266. ####################################################################################################################
  267. ####################################################################################################################
  268. # Integration Test Files Modularization
  269. ####################################################################################################################
  270. ####################################################################################################################
  271. ####################################################################################################################
  272. if (${LS_STD_BUILD_WITH_TESTS})
  273. set(INTEGRATION_TEST_FILES_IO
  274. ${CMAKE_CURRENT_SOURCE_DIR}/test/cases/io/section-pair/reader/SectionPairFileReaderIT.cpp)
  275. endif ()
  276. ####################################################################################################################
  277. ####################################################################################################################
  278. ####################################################################################################################
  279. # Integration Test Suite Builds
  280. ####################################################################################################################
  281. ####################################################################################################################
  282. ####################################################################################################################
  283. ##########################################################
  284. # Integration Build Tests (io)
  285. ##########################################################
  286. if (${LS_STD_BUILD_WITH_TESTS})
  287. message("${MODULE_NAME_IO}: Building integration tests...")
  288. add_executable(${MODULE_NAME_IO}-integration-test
  289. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  290. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  291. ${INTEGRATION_TEST_FILES_IO})
  292. endif ()
  293. ####################################################################################################################
  294. ####################################################################################################################
  295. ####################################################################################################################
  296. # Whole Test Suite Builds
  297. ####################################################################################################################
  298. ####################################################################################################################
  299. ####################################################################################################################
  300. if (${LS_STD_BUILD_WITH_TESTS})
  301. if (${LS_STD_BUILD_WITH_JNI})
  302. message("${PROJECT_NAME}: Building all tests...")
  303. add_executable(${PROJECT_NAME}-test
  304. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  305. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  306. ${UNIT_TEST_FILES_BOXING}
  307. ${UNIT_TEST_FILES_CORE}
  308. ${UNIT_TEST_FILES_CORE_JNI}
  309. ${UNIT_TEST_FILES_ENCODING}
  310. ${UNIT_TEST_FILES_EVENT}
  311. ${UNIT_TEST_FILES_IO}
  312. ${INTEGRATION_TEST_FILES_IO}
  313. ${UNIT_TEST_FILES_SERIALIZATION}
  314. ${UNIT_TEST_FILES_TIME})
  315. else ()
  316. message("${PROJECT_NAME}: Building all tests with JNI support...")
  317. add_executable(${PROJECT_NAME}-test
  318. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestException.cpp
  319. ${CMAKE_CURRENT_SOURCE_DIR}/test/classes/TestHelper.cpp
  320. ${UNIT_TEST_FILES_BOXING}
  321. ${UNIT_TEST_FILES_CORE}
  322. ${UNIT_TEST_FILES_ENCODING}
  323. ${UNIT_TEST_FILES_EVENT}
  324. ${UNIT_TEST_FILES_IO}
  325. ${INTEGRATION_TEST_FILES_IO}
  326. ${UNIT_TEST_FILES_SERIALIZATION}
  327. ${UNIT_TEST_FILES_TIME})
  328. endif ()
  329. endif ()
  330. ####################################################################################################################
  331. ####################################################################################################################
  332. ####################################################################################################################
  333. # Build Library Binaries
  334. ####################################################################################################################
  335. ####################################################################################################################
  336. ####################################################################################################################
  337. include(cmake/Build.cmake)
  338. build_boxing_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED MODULE_NAME_BOXING MODULE_NAME_CORE SOURCE_FILES_BOXING)
  339. build_core_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED LS_STD_BUILD_WITH_JNI MODULE_NAME_CORE SOURCE_FILES_CORE SOURCE_FILES_CORE_JNI)
  340. build_encoding_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED MODULE_NAME_ENCODING MODULE_NAME_CORE SOURCE_FILES_ENCODING)
  341. build_event_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED MODULE_NAME_EVENT MODULE_NAME_CORE SOURCE_FILES_EVENT)
  342. build_io_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED MODULE_NAME_IO MODULE_NAME_CORE SOURCE_FILES_IO)
  343. build_time_module(LS_STD_BUILD_STATIC LS_STD_BUILD_SHARED LS_STD_BUILD_WITH_JNI MODULE_NAME_TIME MODULE_NAME_CORE SOURCE_FILES_TIME SOURCE_FILES_LINUX_TIME SOURCE_FILES_WINDOWS_TIME SOURCE_FILES_TIME_JNI)
  344. # CLI base64
  345. add_executable(${CLI_NAME_BASE64}
  346. ${CMAKE_CURRENT_SOURCE_DIR}/source/ls-std/encoding/cli/cli-base64-main.cpp)
  347. ####################################################################################################################
  348. ####################################################################################################################
  349. ####################################################################################################################
  350. # Unit Test Suite: Linking
  351. ####################################################################################################################
  352. ####################################################################################################################
  353. ####################################################################################################################
  354. ##########################################################
  355. # Unit Linking (boxing)
  356. ##########################################################
  357. if (${LS_STD_BUILD_WITH_TESTS})
  358. message("${MODULE_NAME_BOXING}: Linking libraries for unit test application...")
  359. target_link_libraries(${MODULE_NAME_BOXING}-unit-test
  360. gtest
  361. gtest_main
  362. "${MODULE_NAME_BOXING}"
  363. "${MODULE_NAME_CORE}")
  364. endif ()
  365. ##########################################################
  366. # Unit Linking (core)
  367. ##########################################################
  368. if (${LS_STD_BUILD_WITH_TESTS})
  369. message("${MODULE_NAME_CORE}: Linking libraries for unit test application...")
  370. target_link_libraries(${MODULE_NAME_CORE}-unit-test
  371. gtest
  372. gmock
  373. gtest_main
  374. "${MODULE_NAME_CORE}")
  375. endif ()
  376. ##########################################################
  377. # Unit Linking (encoding)
  378. ##########################################################
  379. if (${LS_STD_BUILD_WITH_TESTS})
  380. message("${MODULE_NAME_ENCODING}: Linking libraries for unit test application...")
  381. target_link_libraries(${MODULE_NAME_ENCODING}-unit-test
  382. gtest
  383. gtest_main
  384. "${MODULE_NAME_ENCODING}"
  385. "${MODULE_NAME_CORE}")
  386. endif ()
  387. ##########################################################
  388. # Unit Linking (event)
  389. ##########################################################
  390. if (${LS_STD_BUILD_WITH_TESTS})
  391. message("${MODULE_NAME_EVENT}: Linking libraries for unit test application...")
  392. target_link_libraries(${MODULE_NAME_EVENT}-unit-test
  393. gtest
  394. gtest_main
  395. "${MODULE_NAME_EVENT}"
  396. "${MODULE_NAME_CORE}")
  397. endif ()
  398. ##########################################################
  399. # Unit Linking (io)
  400. ##########################################################
  401. if (${LS_STD_BUILD_WITH_TESTS})
  402. message("${MODULE_NAME_IO}: Linking libraries for unit test application...")
  403. target_link_libraries(${MODULE_NAME_IO}-unit-test
  404. gtest
  405. gmock
  406. gtest_main
  407. "${MODULE_NAME_IO}"
  408. "${MODULE_NAME_CORE}")
  409. endif ()
  410. ##########################################################
  411. # Unit Linking (time)
  412. ##########################################################
  413. if (${LS_STD_BUILD_WITH_TESTS})
  414. message("${MODULE_NAME_TIME}: Linking libraries for unit test application...")
  415. target_link_libraries(${MODULE_NAME_TIME}-unit-test
  416. gtest
  417. gmock
  418. gtest_main
  419. "${MODULE_NAME_TIME}"
  420. "${MODULE_NAME_CORE}")
  421. endif ()
  422. ##########################################################
  423. # Unit Linking (all)
  424. ##########################################################
  425. if (${LS_STD_BUILD_WITH_TESTS})
  426. message("${PROJECT_NAME}: Linking libraries for unit test application...")
  427. target_link_libraries(${PROJECT_NAME}-unit-test
  428. gtest
  429. gmock
  430. gtest_main
  431. "${MODULE_NAME_BOXING}"
  432. "${MODULE_NAME_ENCODING}"
  433. "${MODULE_NAME_EVENT}"
  434. "${MODULE_NAME_IO}"
  435. "${MODULE_NAME_TIME}"
  436. "${MODULE_NAME_CORE}")
  437. endif ()
  438. ####################################################################################################################
  439. ####################################################################################################################
  440. ####################################################################################################################
  441. # Integration Test Suite: Linking
  442. ####################################################################################################################
  443. ####################################################################################################################
  444. ####################################################################################################################
  445. ##########################################################
  446. # Integration Linking (io)
  447. ##########################################################
  448. if (${LS_STD_BUILD_WITH_TESTS})
  449. message("${MODULE_NAME_IO}: Linking libraries for integration test application...")
  450. target_link_libraries(${MODULE_NAME_IO}-integration-test
  451. gtest
  452. gtest_main
  453. "${MODULE_NAME_IO}"
  454. "${MODULE_NAME_CORE}")
  455. endif ()
  456. ####################################################################################################################
  457. ####################################################################################################################
  458. ####################################################################################################################
  459. # Whole Test Suite: Linking
  460. ####################################################################################################################
  461. ####################################################################################################################
  462. ####################################################################################################################
  463. if (${LS_STD_BUILD_WITH_TESTS})
  464. message("${PROJECT_NAME}: Linking libraries for whole test application...")
  465. target_link_libraries(${PROJECT_NAME}-test
  466. gtest
  467. gmock
  468. gtest_main
  469. "${MODULE_NAME_BOXING}"
  470. "${MODULE_NAME_ENCODING}"
  471. "${MODULE_NAME_EVENT}"
  472. "${MODULE_NAME_IO}"
  473. "${MODULE_NAME_TIME}"
  474. "${MODULE_NAME_CORE}")
  475. endif ()
  476. ####################################################################################################################
  477. ####################################################################################################################
  478. ####################################################################################################################
  479. # CLI - Base64: Linking
  480. ####################################################################################################################
  481. ####################################################################################################################
  482. ####################################################################################################################
  483. target_link_libraries(${CLI_NAME_BASE64}
  484. "${MODULE_NAME_ENCODING}"
  485. "${MODULE_NAME_CORE}")