1+ # cmake_minimum_required(VERSION 3.28.2) # CXX Modules Support
12cmake_minimum_required (VERSION 3.10 )
2- project (manapihttp LANGUAGES CXX VERSION 1.0.0 DESCRIPTION "Fast HTTP Server/Client Library for easy develop API-Services and Web Applications" )
3+ project (manapihttp LANGUAGES CXX VERSION 1.0.1 DESCRIPTION "Fast HTTP Server/Client Library for easy develop API-Services and Web Applications" )
34
45set (CMAKE_CXX_STANDARD 23)
6+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
7+ set (CMAKE_CXX_EXTENSIONS OFF )
8+ #set(CMAKE_CXX_VISIBILITY_PRESET hidden)
9+ #set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
510
611cmake_policy (SET CMP0091 NEW )
712cmake_policy (SET CMP0070 NEW )
@@ -16,9 +21,9 @@ if (WIN32)
1621 set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
1722endif ()
1823
19- if (CMAKE_COMPILER_IS_GNUCXX )
20- add_compile_options (-fmerge-all-constants )
21- endif ( )
24+ add_compile_options ($<$< CXX_COMPILER_ID : GNU >:- fmerge - all - constants > )
25+ # add_compile_options($<$<CXX_COMPILER_ID:GNU>:-fmodules> )
26+ # add_compile_options($<$<CXX_COMPILER_ID:GNU>:-fmodules-ts> )
2227
2328if (NOT CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME )
2429 message (STATUS "This project has a top-level one called [${CMAKE_PROJECT_NAME} ]" )
@@ -74,6 +79,7 @@ message(STATUS "libnghttp2 by nghttp2" ${MANAPIHTTP_NGHTTP2_DEPENDENCY})
7479message (STATUS "libnghttp3 by nghttp3" ${MANAPIHTTP_NGHTTP3_DEPENDENCY} )
7580
7681set (MANAPIHTTP_GMP_DEPENDENCY_OBJ OFF )
82+ set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
7783
7884if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
7985 message (STATUS "Build type: Debug" )
@@ -584,6 +590,8 @@ string(REPLACE "{{ VAR_MANAPIHTTP_IS_SHARED }}" $<BOOL:${BUILD_SHARED_LIBS}> TEX
584590file (GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR} /include/ManapiParams.hpp" CONTENT "${TEXT} " )
585591set_property (DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_CURRENT_BINARY_DIR} /include/ManapiParams.hpp" )
586592
593+
594+
587595set (MANAPIHTTP_HTTP_FILES
588596 include/ManapiHttp.hpp
589597 include/ManapiThreadPool.hpp
@@ -777,6 +785,11 @@ set(MANAPIHTTP_HTTP_FILES
777785 src/include/ManapiEventLoopCurl.hpp
778786)
779787
788+ set (MANAPIHTTP_MODULES
789+ modules/ManapiJson.cppm
790+ modules/ManapiJsonBuilder.cppm
791+ )
792+
780793if (MANAPIHTTP_BUILD_TYPE STREQUAL "exe" OR MANAPIHTTP_BUILD_TYPE STREQUAL "test" )
781794 # EXE
782795 message (STATUS "Build type 'exe'" )
@@ -906,22 +919,17 @@ if (MANAPIHTTP_BUILD_TYPE STREQUAL "exe" OR MANAPIHTTP_BUILD_TYPE STREQUAL "test
906919
907920 add_compile_definitions (MANAPIHTTP_HTTP_AS_EXECUTABLE )
908921 if (MANAPIHTTP_BUILD_TYPE STREQUAL "exe" )
909- add_executable (${PROJECT_NAME} main.cpp handlers.hpp handlers.cpp ${MANAPIHTTP_HTTP_FILES} ${PROTO_SRCS} ${PROTO_HDRS} )
910- # else ()
911- # add_executable(${PROJECT_NAME}
912- # test_package/test_http.hpp
913- # test_package/test_json.hpp
914- # test_package/test_parse.hpp
915- # test_package/test_package.cpp
916- # test_package/test_bigint.hpp
917- # test_package/test_json_masks.hpp
918- # test_package/test_http_and_fetch.cpp
919- # test_package/test_fetch.hpp
920- # test_package/test_fs.cpp
921- # test_package/test_fs.hpp
922- # test_package/utest.h
923- # ${MANAPIHTTP_HTTP_FILES} ${PROTO_SRCS} ${PROTO_HDRS})
922+ add_executable (${PROJECT_NAME} )
924923 endif ()
924+
925+ target_sources (${PROJECT_NAME} PRIVATE main.cpp handlers.hpp handlers.cpp ${MANAPIHTTP_HTTP_FILES} ${PROTO_SRCS} ${PROTO_HDRS} )
926+
927+ # target_sources(${PROJECT_NAME} PUBLIC
928+ # FILE_SET CXX_MODULES
929+ # BASE_DIRS ${CMAKE_SOURCE_DIR}/modules
930+ # FILES ${MANAPIHTTP_MODULES}
931+ # )
932+
925933else ()
926934 set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s" )
927935 set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s" )
@@ -931,20 +939,33 @@ else ()
931939
932940 add_compile_definitions (MANAPIHTTP_HTTP_AS_LIBRARY )
933941 if (BUILD_SHARED_LIBS )
934- add_library (${PROJECT_NAME} SHARED ${MANAPIHTTP_HTTP_FILES} )
942+ add_library (${PROJECT_NAME} SHARED )
935943 else ()
936- add_library (${PROJECT_NAME} ${MANAPIHTTP_HTTP_FILES} )
944+ add_library (${PROJECT_NAME} )
937945 endif ()
938946
947+ target_sources (${PROJECT_NAME} PRIVATE ${MANAPIHTTP_HTTP_FILES} )
948+
939949 set_target_properties (${PROJECT_NAME} PROPERTIES
940950 VERSION ${PROJECT_VERSION}
941951 SOVERSION ${PROJECT_VERSION_MAJOR} )
942952
953+ # target_sources(${PROJECT_NAME} PUBLIC
954+ # FILE_SET CXX_MODULES
955+ # BASE_DIRS ${CMAKE_SOURCE_DIR}/modules
956+ # FILES ${MANAPIHTTP_MODULES}
957+ # )
958+
943959 configure_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/${PROJECT_NAME}.pc.in ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME}.pc @ONLY )
944960endif ()
945961
946- set_target_properties (${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} )
962+ target_compile_features (${PROJECT_NAME} PUBLIC cxx_std_23 )
963+
964+ include (GenerateExportHeader )
947965
966+ generate_export_header (${PROJECT_NAME} EXPORT_FILE_NAME ./include/ManapiExport.hpp )
967+
968+ set_target_properties (${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} )
948969
949970if (WIN32 AND BUILD_SHARED_LIBS )
950971 set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
@@ -1251,20 +1272,59 @@ else ()
12511272 endif ()
12521273
12531274
1254- install (TARGETS ${PROJECT_NAME} EXPORT ManapiHttpConfig
1275+ install (TARGETS ${PROJECT_NAME} EXPORT manapihttp- targets
12551276 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
12561277 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
12571278 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
1258- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
1279+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
1280+ # FILE_SET CXX_MODULES
1281+ # DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/src
1282+ # CXX_MODULES_BMI
1283+ # DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/bmi-${CMAKE_CXX_COMPILER_ID}_$<CONFIG>
1284+ # FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECTNAME}
1285+ )
1286+
12591287 install (DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME} )
12601288 install (DIRECTORY ${CMAKE_BINARY_DIR} /include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} /${PROJECT_NAME} )
12611289
1262- install (EXPORT ManapiHttpConfig DESTINATION lib/cmake/${PROJECT_NAME} )
1290+ install (EXPORT manapihttp-targets
1291+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME}
1292+ # CXX_MODULES_DIRECTORY .
1293+ )
12631294
12641295 set_target_properties (${PROJECT_NAME} PROPERTIES
12651296 COMPILE_PDB_NAME ${PROJECT_NAME}
12661297 COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_INSTALL_BINDIR}
12671298 )
12681299
1269- export (TARGETS ${PROJECT_NAME} FILE ManapiHttpConfig.cmake )
1270- endif ()
1300+ install (FILES cmake/manapihttp-config.cmake
1301+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME}
1302+ )
1303+ #
1304+ # export(TARGETS ${PROJECT_NAME} FILE ManapiHttpConfig.cmake)
1305+ endif ()
1306+
1307+ #include("${manapihttp_PACKAGE_FOLDER_DEBUG}/lib/cmake/manapihttp/manapihttp-config.cmake")
1308+ #
1309+ #set_target_properties(manapihttp::manapihttp PROPERTIES
1310+ # CXX_EXTENSIONS "OFF"
1311+ # CXX_MODULE_STD ""
1312+ # IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS "MANAPIHTTP_HTTP_BUILD_DEBUG;MANAPIHTTP_QUICHE_VERSION=\"0.24.4\";MANAPIHTTP_HTTP_AS_LIBRARY"
1313+ # IMPORTED_CXX_MODULES_COMPILE_FEATURES "cxx_std_23"
1314+ # IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES "/home/Timur/.conan2/p/b/manap001c9f726cfa4/b/include;/home/Timur/.conan2/p/b/manap001c9f726cfa4/b/build/Debug/include;/home/Timur/.conan2/p/b/manap001c9f726cfa4/b/build/Debug/generated;${manapihttp_PACKAGE_FOLDER_DEBUG}/include/manapihttp"
1315+ # INTERFACE_COMPILE_FEATURES "cxx_std_23"
1316+ # INTERFACE_INCLUDE_DIRECTORIES "${manapihttp_PACKAGE_FOLDER_DEBUG}/include/manapihttp"
1317+ #)
1318+ #
1319+ #target_sources(manapihttp::manapihttp
1320+ # INTERFACE
1321+ # FILE_SET "CXX_MODULES"
1322+ # TYPE "CXX_MODULES"
1323+ # BASE_DIRS "${manapihttp_PACKAGE_FOLDER_DEBUG}/lib/cmake/manapihttp/src"
1324+ # FILES "${manapihttp_PACKAGE_FOLDER_DEBUG}/lib/cmake/manapihttp/src/ManapiJson.cppm"
1325+ #)
1326+ #
1327+ #set_property(TARGET "manapihttp::manapihttp"
1328+ # PROPERTY IMPORTED_CXX_MODULES_DEBUG
1329+ # "manapi=${manapihttp_PACKAGE_FOLDER_DEBUG}/lib/cmake/manapihttp/src/ManapiJson.cppm,${manapihttp_PACKAGE_FOLDER_DEBUG}/lib/cmake/manapihttp/bmi-GNU_Debug/manapi.gcm"
1330+ #)
0 commit comments