티스토리 뷰

728x90

프로젝트 지원 환경

#git URL
git clone https://github.com/HaeJuk-Lab/crypto.git

 

1. 프로젝트 구조

  • 폴더 기반 프로젝트: 모든 소스 코드, 헤더, 빌드 파일 및 문서를 명확하게 구분하는 폴더 구조로 설계
  • CMakeLists 지원: CMake를 사용해 다양한 플랫폼에서 일관된 빌드 시스템 제공

폴더 구조 예시

CryptoProject/
│
├── CMakeLists.txt
├── src/                   # 소스 코드
│   ├── rng/               # 난수 생성기 관련 코드
│   │   ├── rng.cpp
│   │   └── rng.h
│   ├── rsa/               # RSA 관련 코드
│   │   ├── rsa.cpp
│   │   └── rsa.h
│   ├── sha/               # SHA 알고리즘
│   │   ├── sha256.cpp
│   │   └── sha1.cpp
│   ├── aria/              # ARIA 암호화 알고리즘
│   │   ├── aria.cpp
│   │   └── aria.h
│   └── main.cpp           # 진입점
│
├── include/               # 헤더 파일
│   ├── *.h
│
├── build/                 # 빌드 아웃풋 (바이너리, 중간 파일 등)
│
├── test/                  # 유닛 테스트
│   ├── rng_test.cpp
│   ├── rsa_test.cpp
│   └── sha_test.cpp
│
│
└── docs/                  # 문서 및 설계서
    ├── design.md
    └── README.md

CMakeLists.txt 예시

cmake_minimum_required(VERSION 3.10)
project(CryptoProject)

# C++ 표준 설정
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# OS별 빌드 옵션
if(WIN32)
    add_definitions(-DPLATFORM_WINDOWS)
    set(LIBRARY_OUTPUT_NAME "CryptoLibrary.dll")
elseif(APPLE)
    add_definitions(-DPLATFORM_MAC)
    set(LIBRARY_OUTPUT_NAME "libCryptoLibrary.dylib")
elseif(UNIX)
    add_definitions(-DPLATFORM_LINUX)
    set(LIBRARY_OUTPUT_NAME "libCryptoLibrary.so")
endif()

# 소스 파일 설정
file(GLOB_RECURSE SRC_FILES src/*.cpp)
file(GLOB_RECURSE HEADER_FILES include/*.h)

# 라이브러리 생성
add_library(${LIBRARY_OUTPUT_NAME} SHARED ${SRC_FILES})

# 인클루드 디렉토리 설정
target_include_directories(${LIBRARY_OUTPUT_NAME} PUBLIC include)

# 빌드 옵션
target_compile_options(${LIBRARY_OUTPUT_NAME} PRIVATE -Wall -Wextra -Werror)

2. 지원 OS

  • Windows
  • Linux
  • Unix
  • MacOS

3. 개발 언어 및 표준

  • C/C++ 20: 최신 C/C++ 표준을 기반으로 개발하여 최적의 성능과 유지보수성 확보

4. 하드웨어 호환성

  • Intel CPU: 최신 Intel 프로세서 아키텍처 지원
  • AMD CPU: AMD 프로세서에서의 최적화 및 호환성 보장

5. 빌드 및 테스트 환경

  • Unit Test 제공: 각 모듈 및 기능에 대한 단위 테스트를 통해 안정성 검증
  • Jenkins 빌드 서버: 지속적 통합(CI) 및 지속적 배포(CD) 환경 구축

6. 소스 코드 관리

  • GitLab 소스 관리: 버전 관리, 코드 리뷰 및 협업을 위한 GitLab 사용

7. 배포 및 라이브러리 형태

  • Static Library 지원: 정적 라이브러리 형태로 배포
  • Windows: DLL (Dynamic-Link Library) 형태로 동적 라이브러리 제공
  • Linux: .so (Shared Object) 형태로 동적 라이브러리 제공
  • MacOS: .dylib (Dynamic Library) 형태로 동적 라이브러리 제공
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
250x250