Skip to content

Commit 6d9a3fb

Browse files
committed
Added App Test
- Added application project test.
1 parent a1c03a3 commit 6d9a3fb

31 files changed

+1468
-2
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,5 @@ Thumbs.db
4343
build/
4444
build/ProjectTemplate
4545
third-party/
46-
application/
4746
dynamics/
4847
CMakeLists.txt.user

application/CMakeLists.txt

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
cmake_minimum_required(VERSION 3.5)
2+
3+
project(Application LANGUAGES CXX)
4+
set(CMAKE_CXX_STANDARD 23)
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_BUILD_TYPE "Debug")
7+
8+
get_filename_component(PARENT_DIR ../ ABSOLUTE)
9+
10+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
11+
12+
include(ExternalProject)
13+
include(FetchContent)
14+
15+
16+
# ------ PACKAGES CONFIG ------
17+
include(project-setting)
18+
if(project-setting)
19+
return()
20+
endif()
21+
set(project-setting ON)
22+
23+
# ------ CROSS-COMPILE CONFIG ------
24+
include(cross-compile)
25+
if(cross-compile)
26+
return()
27+
endif()
28+
set(cross-compile ON)
29+
30+
# ------ PROJECT CONFIG ------
31+
include(color-message)
32+
if(color-message)
33+
return()
34+
endif()
35+
set(color-message ON)
36+
37+
# ------ COMPILER CONFIG ------
38+
include(compiler-options)
39+
if(compiler-options)
40+
return()
41+
endif()
42+
set(compiler-options ON)
43+
44+
# ------ PACKAGES CONFIG ------
45+
include(packages)
46+
if(packages)
47+
return()
48+
endif()
49+
set(packages ON)
50+
51+
set(PREFIX_HPPHEADER *.hpp)
52+
set(PREFIX_SOURCE *.cpp)
53+
54+
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
55+
56+
file(GLOB SOURCESFILE
57+
${PREFIX_HPPHEADER}
58+
${PREFIX_SOURCE}
59+
)
60+
61+
file(GLOB UTILS
62+
utilities/${SUFFIX_HPPHEADER}
63+
utilities/${SUFFIX_SOURCE}
64+
)
65+
66+
# ------ PROJECT DIRECTORIES ------
67+
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/build/)
68+
set(EXECUTABLE_OUTPUT_PATH ${dir}/final CACHE PATH "Build directory" FORCE)
69+
message(STATUS "Executable output path: ${EXECUTABLE_OUTPUT_PATH}")
70+
71+
# Include directories
72+
include_directories(${PROJECT_SOURCE_DIR}/../)
73+
include_directories(${PROJECT_SOURCE_DIR}/../source)
74+
include_directories(${PROJECT_SOURCE_DIR}/../include)
75+
76+
add_executable(${PROJECT_NAME} ${SOURCESFILE} ${UTILS})
77+
78+
79+
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/source PRIVATE source ${LIB_TARGET_INCLUDE_DIRECTORIES})
80+
target_link_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/source ${LIB_TARGET_LINK_DIRECTORIES})
81+
target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../../../build/final ${LIB_TARGET_LINK_DIRECTORIES}) #CoreInterface
82+
83+
84+
target_link_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/../build/final)
85+
target_link_libraries(${PROJECT_NAME} PRIVATE CoreInterface ${LIB_MODULES})
86+
target_compile_definitions(${PROJECT_NAME} PUBLIC ${LIB_TARGET_COMPILER_DEFINATION})
87+
target_include_directories(${PROJECT_NAME}
88+
PUBLIC
89+
${CMAKE_CURRENT_SOURCE_DIR}/source PRIVATE source
90+
${LIB_TARGET_INCLUDE_DIRECTORIES}
91+
)
92+
93+
94+
# Ignore unused files for packaging
95+
list(APPEND CPACK_SOURCE_IGNORE_FILES /.git/ /build/ .gitignore .DS_Store)
96+
97+
# Copy files after build
98+
if(EXISTS "${PROJECT_SOURCE_DIR}/../build/final")
99+
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
100+
COMMAND ${CMAKE_COMMAND} -E copy_directory
101+
"${PROJECT_SOURCE_DIR}/../build/final"
102+
"${CMAKE_CURRENT_BINARY_DIR}/final"
103+
)
104+
else()
105+
message(WARNING "Directory ${PROJECT_SOURCE_DIR}/../build/final does not exist")
106+
endif()
107+
108+
# Define PLATFORM_FOLDER if not already defined
109+
if(NOT DEFINED PLATFORM_FOLDER)
110+
set(PLATFORM_FOLDER "platform") # Default value, adjust as needed
111+
endif()
112+
113+
get_filename_component(PARENT_DIR ../ ABSOLUTE)
114+
115+
#Copy from Core Interface.
116+
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
117+
COMMAND ${CMAKE_COMMAND} -E copy_directory
118+
"${PROJECT_SOURCE_DIR}/../build/final"
119+
"${CMAKE_CURRENT_BINARY_DIR}/final"
120+
)
121+
122+
123+
if(EXISTS "${PROJECT_SOURCE_DIR}/build/${PLATFORM_FOLDER}/${PROJECT_NAME}")
124+
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
125+
COMMAND ${CMAKE_COMMAND} -E copy
126+
"${PROJECT_SOURCE_DIR}/build/${PLATFORM_FOLDER}/${PROJECT_NAME}"
127+
"${PARENT_DIR}/application/build/final"
128+
)
129+
else()
130+
message(WARNING "File ${PROJECT_SOURCE_DIR}/build/${PLATFORM_FOLDER}/${PROJECT_NAME} does not exist")
131+
endif()
132+
133+
# Install target
134+
install(TARGETS ${PROJECT_NAME} DESTINATION build/final)

application/cmake/color-message.cmake

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
cmake_minimum_required(VERSION 3.23)
2+
if(${CMAKE_VERSION} VERSION_LESS 3.23)
3+
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
4+
else()
5+
cmake_policy(VERSION 3.23)
6+
endif()
7+
8+
if(NOT WIN32)
9+
string(ASCII 27 Esc)
10+
set(ColourReset "${Esc}[m")
11+
set(Bold "${Esc}[1m")
12+
set(Underscore "${Esc}[4m")
13+
set(Red "${Esc}[31m")
14+
set(Green "${Esc}[32m")
15+
set(Yellow "${Esc}[33m")
16+
set(Blue "${Esc}[34m")
17+
set(Magenta "${Esc}[35m")
18+
set(Cyan "${Esc}[36m")
19+
set(White "${Esc}[37m")
20+
set(BoldRed "${Esc}[1;31m")
21+
set(BoldGreen "${Esc}[1;32m")
22+
set(BoldYellow "${Esc}[1;33m")
23+
set(BoldBlue "${Esc}[1;34m")
24+
set(BoldMagenta "${Esc}[1;35m")
25+
set(BoldCyan "${Esc}[1;36m")
26+
set(BoldWhite "${Esc}[1;37m")
27+
endif()
28+
29+
function(ColorMessage)
30+
list(GET ARGV 0 MessageType)
31+
if(MessageType STREQUAL FATAL_ERROR OR MessageType STREQUAL SEND_ERROR)
32+
list(REMOVE_AT ARGV 0)
33+
message(${MessageType} "${BoldRed}>> ${ARGV}${ColourReset}")
34+
elseif(MessageType STREQUAL WARNING)
35+
list(REMOVE_AT ARGV 0)
36+
message(${MessageType} "${BoldYellow}>> ${ARGV}${ColourReset}")
37+
elseif(MessageType STREQUAL AUTHOR_WARNING)
38+
list(REMOVE_AT ARGV 0)
39+
message(${MessageType} "${BoldCyan}>> ${ARGV}${ColourReset}")
40+
elseif(MessageType STREQUAL STATUS)
41+
list(REMOVE_AT ARGV 0)
42+
message(${MessageType} "${Green}>> ${ARGV}${ColourReset}")
43+
elseif(MessageType STREQUAL INFO)
44+
list(REMOVE_AT ARGV 0)
45+
message("-- ${BoldBlue}>> ${ARGV}${ColourReset}")
46+
elseif(MessageType STREQUAL NOTICE)
47+
list(REMOVE_AT ARGV 0)
48+
message("-- ${Blue}>> ${ARGV}${ColourReset}")
49+
elseif(MessageType STREQUAL IMPORTANT)
50+
list(REMOVE_AT ARGV 0)
51+
message("-- ${Yellow}>> ${ARGV}${ColourReset}")
52+
elseif(MessageType STREQUAL MORE_IMPORTANT)
53+
list(REMOVE_AT ARGV 0)
54+
message("-- ${BoldYellow}>> ${ARGV}${ColourReset}")
55+
else()
56+
message(">> ${ARGV}")
57+
endif()
58+
endfunction()

0 commit comments

Comments
 (0)