Skip to content

Commit

Permalink
-added CMake helper functions located in hypertextcpp.cmake;
Browse files Browse the repository at this point in the history
-updated readme;
-set version to v1.2.0;
  • Loading branch information
kamchatka-volcano committed Oct 3, 2024
1 parent 8e36030 commit f7ebe30
Show file tree
Hide file tree
Showing 11 changed files with 140 additions and 139 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.18)
project(hypertextcpp VERSION 1.1.0 DESCRIPTION "hypertextcpp")
project(hypertextcpp VERSION 1.2.0 DESCRIPTION "hypertextcpp")

include(external/seal_lake)

Expand Down
104 changes: 45 additions & 59 deletions README.md

Large diffs are not rendered by default.

36 changes: 0 additions & 36 deletions build_shared_template.cmake

This file was deleted.

Binary file modified doc/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 3 additions & 6 deletions examples/ex_01/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
cmake_minimum_required(VERSION 3.18)
project(ex_01)

add_custom_command(
OUTPUT todolist.h
COMMAND hypertextcpp ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp -o ${CMAKE_CURRENT_SOURCE_DIR}/todolist.h
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp
VERBATIM
)
include(../../hypertextcpp.cmake)

hypertextcpp_GenerateHeader(NAME todolist)

set(SRC
todolist_printer.cpp
Expand Down
9 changes: 3 additions & 6 deletions examples/ex_02/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
cmake_minimum_required(VERSION 3.18)
project(ex_02)

add_custom_command(
OUTPUT todolist.h
COMMAND hypertextcpp ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp -o ${CMAKE_CURRENT_SOURCE_DIR}/todolist.h
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp
VERBATIM
)
include(../../hypertextcpp.cmake)

hypertextcpp_GenerateHeader(NAME todolist)

set(SRC
todolist_printer.cpp
Expand Down
9 changes: 3 additions & 6 deletions examples/ex_03/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
cmake_minimum_required(VERSION 3.18)
project(ex_03)

add_custom_command(
OUTPUT todolist.h
COMMAND hypertextcpp ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp -o ${CMAKE_CURRENT_SOURCE_DIR}/todolist.h
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp
VERBATIM
)
include(../../hypertextcpp.cmake)

hypertextcpp_GenerateHeader(NAME todolist)

set(SRC
todolist_printer.cpp
Expand Down
9 changes: 3 additions & 6 deletions examples/ex_04/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
cmake_minimum_required(VERSION 3.18)
project(ex_04)

add_custom_command(
OUTPUT todolist.h
COMMAND hypertextcpp ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp -o ${CMAKE_CURRENT_SOURCE_DIR}/todolist.h --class-name TodoList
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/todolist.htcpp
VERBATIM
)
include(../../hypertextcpp.cmake)

hypertextcpp_GenerateHeader(NAME todolist CLASS_NAME TodoList)

set(SRC
todolist_printer.cpp
Expand Down
4 changes: 2 additions & 2 deletions examples/ex_05/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS OFF)

target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS})

include(../../build_shared_template.cmake)
hypertextcpp_BuildSharedTemplate(
include(../../hypertextcpp.cmake)
hypertextcpp_BuildSharedLibrary(
NAME todolist
OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}
)
Expand Down
80 changes: 80 additions & 0 deletions hypertextcpp.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
function(hypertextcpp_GenerateHeader)
cmake_parse_arguments(
ARG
""
"NAME"
"FILE;CLASS_NAME;OUTPUT_DIR"
${ARGN}
)
if (NOT ARG_NAME)
message(FATAL_ERROR "[hypertextcpp_GenerateHeader] Argument 'NAME' is missing")
endif()
if (ARG_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "[hypertextcpp_GenerateHeader] Unsupported argument: ${ARG_UNPARSED_ARGUMENTS}")
endif()

if (ARG_FILE)
set(TEMPLATE_FILE ${ARG_FILE})
else()
set(TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_NAME}.htcpp)
endif()

if (ARG_OUTPUT_DIR)
set(OUTPUT_DIR ${ARG_OUTPUT_DIR})
else()
set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
endif()

if (ARG_CLASS_NAME)
add_custom_command(
OUTPUT ${ARG_NAME}.h
COMMAND hypertextcpp ${TEMPLATE_FILE} -o ${OUTPUT_DIR}/${ARG_NAME}.h -c ${CLASS_NAME}
DEPENDS ${TEMPLATE_FILE}
VERBATIM
)
else()
add_custom_command(
OUTPUT ${ARG_NAME}.h
COMMAND hypertextcpp ${TEMPLATE_FILE} -o ${OUTPUT_DIR}/${ARG_NAME}.h
DEPENDS ${TEMPLATE_FILE}
VERBATIM
)
endif()
endfunction()

function(hypertextcpp_BuildSharedLibrary)
cmake_parse_arguments(
ARG
""
"NAME"
"FILE;OUTPUT_DIR"
${ARGN}
)
if (NOT ARG_NAME)
message(FATAL_ERROR "[hypertextcpp_BuildSharedLibrary] Argument 'NAME' is missing")
endif()
if (ARG_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "[hypertextcpp_BuildSharedLibrary] Unsupported argument: ${ARG_UNPARSED_ARGUMENTS}")
endif()

if (ARG_FILE)
set(TEMPLATE_FILE ${ARG_FILE})
else()
set(TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_NAME}.htcpp)
endif()

add_custom_command(
OUTPUT ${ARG_NAME}.cpp
COMMAND hypertextcpp ${TEMPLATE_FILE} -o ${CMAKE_CURRENT_BINARY_DIR}/${ARG_NAME}.cpp -s
DEPENDS ${TEMPLATE_FILE}
VERBATIM
)

add_library(${ARG_NAME} SHARED ${CMAKE_CURRENT_BINARY_DIR}/${ARG_NAME}.cpp)
target_compile_features(${ARG_NAME} PUBLIC cxx_std_11)
target_compile_definitions(${ARG_NAME} PUBLIC "HYPERTEXTCPP_EXPORT")
set_target_properties(${ARG_NAME} PROPERTIES CXX_EXTENSIONS OFF)
if (ARG_OUTPUT_DIR)
set_target_properties(${ARG_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${ARG_OUTPUT_DIR})
endif()
endfunction()
17 changes: 0 additions & 17 deletions shared_template/CMakeLists.txt

This file was deleted.

0 comments on commit f7ebe30

Please sign in to comment.