Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
cmake-build-debug/
build/
.idea/
.vscode/

# .env file
backend/.env
Expand All @@ -60,6 +61,5 @@ backend/config/mysqlconfig.json
# Ignore .env file
.env


#ignore .vscode settings
.vscode/
#ignore root dir /CMakeLists.txt; its setup for testing only
CMakeLists.txt
212 changes: 122 additions & 90 deletions backend/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,117 +1,149 @@
#------------ Application SetUp ----------------

cmake_minimum_required(VERSION 3.10)
cmake_minimum_required(VERSION 3.10)

# Set the project name
project(StudentManagementSystem CXX)
# Set the project name
project(StudentManagementSystem CXX)

# C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# Drogon framework
find_package(Drogon REQUIRED)
# Drogon framework
find_package(Drogon REQUIRED)

# libsodium (for password hashing)
find_package(PkgConfig REQUIRED)
pkg_check_modules(SODIUM REQUIRED libsodium) # libsodium
# libsodium (for password hashing)
find_package(PkgConfig REQUIRED)
pkg_check_modules(SODIUM REQUIRED libsodium) # libsodium

# Source files
file(GLOB_RECURSE SOURCES
main.cpp
src/*.cpp
controllers/*.cpp
controllers/auth/*.cpp
)
# Source files
file(GLOB_RECURSE SOURCES
main.cpp
src/*.cpp
controllers/*.cpp
controllers/auth/*.cpp
)

# Executable
add_executable(${PROJECT_NAME}
${SOURCES}
# Executable
add_executable(${PROJECT_NAME}
${SOURCES}

)
)

# Link libraries
target_link_libraries(${PROJECT_NAME}
PRIVATE
Drogon::Drogon
${SODIUM_LIBRARIES}
)
# Link libraries
target_link_libraries(${PROJECT_NAME}
PRIVATE
Drogon::Drogon
${SODIUM_LIBRARIES}
)

# Use C++20 features
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)
# Use C++20 features
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_20)


target_include_directories(${PROJECT_NAME} PUBLIC
controllers/auth
${SODIUM_INCLUDE_DIRS}
)
# Include directories
target_include_directories(${PROJECT_NAME} PRIVATE .)
target_include_directories(${PROJECT_NAME} PUBLIC
controllers/auth
${SODIUM_INCLUDE_DIRS}
)
# Include directories
target_include_directories(${PROJECT_NAME} PRIVATE .)


#-------------------------------------------------------------------




# # ------------ Unit-Test SetUp ----------------
# cmake_minimum_required(VERSION 3.10)

# # Set the project name
# project(StudentManagementSystem CXX)
# set(CMAKE_CXX_STANDARD 20)
# set(CMAKE_CXX_STANDARD_REQUIRED ON)

# # Include directories (add the path to your CxxTest installation)
# include_directories(/opt/homebrew/opt/cxxtest/include)

# # Set the path to the cxxtestgen script
# set(CXXTEST_TESTGEN_EXECUTABLE /opt/homebrew/opt/cxxtest/bin/cxxtestgen)


# # ---- This MUST Stay before find_package for it to work ----
# set(CXXTEST_TESTGEN_EXTRA_ARGS "--runner=VerbosePrinter")

# # Find CxxTest package
# find_package(CxxTest REQUIRED)



# # Source files
# file(GLOB_RECURSE SOURCES
# controllers/auth/*.cpp
# )

# # Enable testing
# enable_testing()
# ========== UNCOMMENT BELOW CODE WHEN RUNNING UNIT TEST ===========

# # ---- libsodium (via pkg-config; simplest on macOS/Linux) ----
# find_package(PkgConfig REQUIRED)
# pkg_check_modules(SODIUM REQUIRED libsodium) # finds include/lib flags


# # Create the test target using the generated runner.cpp
# CXXTEST_ADD_TEST(unittest # Name of the test target
# runner.cpp # Generated by cxxtestgen
# ${CMAKE_CURRENT_SOURCE_DIR}/tests/newCxxTest.h # Test file
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/Hasher.h # Source files to be tested
# )

# target_sources(unittest PRIVATE
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/Hasher.cpp
# )

# # UPDATED: Use SODIUM_LINK_LIBRARIES for full paths (fixes linker 'not found')
# target_include_directories(unittest PRIVATE ${SODIUM_INCLUDE_DIRS})
# target_link_libraries(unittest PRIVATE ${SODIUM_LINK_LIBRARIES})

# # Add the executable for the StudentManagementSystem project
# add_executable(${PROJECT_NAME} ${SOURCES}
# runner.cpp # Generated by cxxtestgen
# )

# # UPDATED: Same for main executable
# target_include_directories(${PROJECT_NAME} PRIVATE ${SODIUM_INCLUDE_DIRS})
# target_link_libraries(${PROJECT_NAME} PRIVATE ${SODIUM_LINK_LIBRARIES})
# # ------------ Unit-Test SetUp ----------------
#cmake_minimum_required(VERSION 3.10)
#
## Set the project name
#project(StudentManagementSystem CXX)
#set(CMAKE_CXX_STANDARD 20)
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
#
## Include directories (add the path to your CxxTest installation)
#include_directories(/opt/homebrew/opt/cxxtest/include)
#
## Set the path to the cxxtestgen script
#set(CXXTEST_TESTGEN_EXECUTABLE /opt/homebrew/opt/cxxtest/bin/cxxtestgen)
#
## Set the path to Jsoncpp
#include_directories(/opt/homebrew/Cellar/json-c/0.18/include)
#
## Set the path to drogon
#include_directories(/opt/homebrew/Cellar/drogon/1.9.11/include)
#
#
## ---- This MUST Stay before find_package for it to work ----
#set(CXXTEST_TESTGEN_EXTRA_ARGS "--runner=VerbosePrinter")
#
## Find CxxTest package
#find_package(CxxTest REQUIRED)
#
#
#
## Source files
#file(GLOB_RECURSE SOURCES
# controllers/auth/*.cpp
# controllers/admin/*.cpp
#)
#
## Enable testing
#enable_testing()
#
## ---- libsodium (via pkg-config; simplest on macOS/Linux) ----
#find_package(PkgConfig REQUIRED)
#pkg_check_modules(SODIUM REQUIRED libsodium) # finds include/lib flags
#find_package(Drogon REQUIRED)
## Create the test target using the generated runner.cpp
#CXXTEST_ADD_TEST(unittest # Name of the test target
# runner.cpp # Generated by cxxtestgen
# ${CMAKE_CURRENT_SOURCE_DIR}/tests/newCxxTest.h # Test file
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/Hasher.h # Source files to be tested
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/StoreCredential.h # Source files to be tested
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/admin/StudentController.h
#)
#
#target_sources(unittest PRIVATE
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/Hasher.cpp
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/auth/StoreCredential.cpp
# ${CMAKE_CURRENT_SOURCE_DIR}/controllers/admin/StudentController.cpp
#)
#
## UPDATED: Use SODIUM_LINK_LIBRARIES for full paths (fixes linker 'not found')
#target_include_directories(unittest
# PRIVATE
# ${SODIUM_INCLUDE_DIRS}
# ${Drogon_INCLUDE_DIRS}
# )
#target_link_libraries(unittest
# PRIVATE
# Drogon::Drogon
# ${SODIUM_LINK_LIBRARIES}
# )
#
## Add the executable for the StudentManagementSystem project
#add_executable(${PROJECT_NAME} ${SOURCES}
# runner.cpp # Generated by cxxtestgen
#)
#
## UPDATED: Same for main executable
#target_include_directories(${PROJECT_NAME}
# PRIVATE
# ${Drogon_INCLUDE_DIRS}
# ${SODIUM_INCLUDE_DIRS}
# )
#target_link_libraries(${PROJECT_NAME}
# PRIVATE
# Drogon::Drogon
# ${SODIUM_LINK_LIBRARIES}
#)

# -------------------------------------------------------------------
Loading