:-'Generic Commit'

This commit is contained in:
Your Name 2025-05-28 16:03:14 +12:00
parent 26a7e2da1b
commit a192dd502a
2 changed files with 19 additions and 20 deletions

View File

@ -144,18 +144,16 @@ CMAKE_FILE="CMakeLists.txt"
function get_executable_name() { function get_executable_name() {
EXECUTABLE_NAME="" EXECUTABLE_NAME=""
local target_name="" local var_value=""
while IFS= read -r line; do while IFS= read -r line; do
if [[ "$line" =~ add_executable.* ]]; then # Look for set(PROJECT_EXE_NAME ipdemo)
target_name=$(echo "$line" | sed 's/.*add_executable(\([^ ]*\).*/\1/' | tr -d ')') if [[ "$line" =~ set\(PROJECT_EXE_NAME[[:space:]]+([a-zA-Z0-9_]+)\) ]]; then
EXECUTABLE_NAME=$target_name var_value=$(echo "$line" | sed -n 's/.*set(PROJECT_EXE_NAME[[:space:]]\+\([a-zA-Z0-9_]\+\)).*/\\1/p')
elif [[ "$line" =~ set_target_properties.*OUTPUT_NAME.* ]]; then
local prop_target_name
prop_target_name=$(echo "$line" | sed 's/.*set_target_properties(\([^ ]*\).*/\1/' | tr -d ' ')
if [[ "$prop_target_name" == "$target_name" ]]; then
EXECUTABLE_NAME=$(echo "$line" | sed 's/.*OUTPUT_NAME \([^)]*\).*/\1/' | tr -d ')')
fi fi
# Look for add_executable(${PROJECT_EXE_NAME}
if [[ "$line" =~ add_executable\(\$\{PROJECT_EXE_NAME\} ]]; then
EXECUTABLE_NAME="$var_value"
fi fi
done < "${SOURCE_DIR}/${CMAKE_FILE}" done < "${SOURCE_DIR}/${CMAKE_FILE}"
@ -163,7 +161,7 @@ function get_executable_name() {
echo "Executable name not found." echo "Executable name not found."
else else
echo "Executable name: $EXECUTABLE_NAME" echo "Executable name: $EXECUTABLE_NAME"
fi fi
} }
function build_arch() { function build_arch() {

View File

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.10)
project(ipdemo VERSION 1.0.0 LANGUAGES CXX) set(PROJECT_EXE_NAME ipdemo)
project(${PROJECT_EXE_NAME} VERSION 1.0.0 LANGUAGES CXX)
# Force static linking globally # Force static linking globally
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
@ -54,12 +55,12 @@ add_custom_target(run_prebuild_script ALL
) )
# Add executable # Add executable
add_executable(ipdemo ${SOURCES}) add_executable(${PROJECT_EXE_NAME} ${SOURCES})
add_dependencies(ipdemo run_prebuild_script) add_dependencies(${PROJECT_EXE_NAME} run_prebuild_script)
# Set include directories # Set include directories
# build dir goes first so that we can use the generated version.hpp # build dir goes first so that we can use the generated version.hpp
target_include_directories(ipdemo PRIVATE target_include_directories(${PROJECT_EXE_NAME} PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src/autogen> $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/src/autogen>
${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/src
) )
@ -90,19 +91,19 @@ FetchContent_Declare(
FetchContent_MakeAvailable(nlohmann_json) FetchContent_MakeAvailable(nlohmann_json)
# Link libraries # Link libraries
target_link_libraries(ipdemo PRIVATE target_link_libraries(${PROJECT_EXE_NAME} PRIVATE
libassert::assert libassert::assert
cpptrace::cpptrace cpptrace::cpptrace
nlohmann_json::nlohmann_json nlohmann_json::nlohmann_json
) )
# Set static linking flags # Set static linking flags
set_target_properties(ipdemo PROPERTIES set_target_properties(${PROJECT_EXE_NAME} PROPERTIES
LINK_FLAGS "-static" LINK_FLAGS "-static"
) )
# Install targets # Install targets
install(TARGETS ipdemo install(TARGETS ${PROJECT_EXE_NAME}
RUNTIME DESTINATION $ENV{HOME}/.local/bin RUNTIME DESTINATION $ENV{HOME}/.local/bin
) )