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

View File

@ -1,5 +1,6 @@
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
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(ipdemo ${SOURCES})
add_dependencies(ipdemo run_prebuild_script)
add_executable(${PROJECT_EXE_NAME} ${SOURCES})
add_dependencies(${PROJECT_EXE_NAME} run_prebuild_script)
# Set include directories
# 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>
${CMAKE_CURRENT_SOURCE_DIR}/src
)
@ -90,19 +91,19 @@ FetchContent_Declare(
FetchContent_MakeAvailable(nlohmann_json)
# Link libraries
target_link_libraries(ipdemo PRIVATE
target_link_libraries(${PROJECT_EXE_NAME} PRIVATE
libassert::assert
cpptrace::cpptrace
nlohmann_json::nlohmann_json
)
# Set static linking flags
set_target_properties(ipdemo PROPERTIES
set_target_properties(${PROJECT_EXE_NAME} PROPERTIES
LINK_FLAGS "-static"
)
# Install targets
install(TARGETS ipdemo
install(TARGETS ${PROJECT_EXE_NAME}
RUNTIME DESTINATION $ENV{HOME}/.local/bin
)