티스토리 뷰
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
링크
TAG
- 패턴
- 성산블루버블
- 스쿠버 다이빙
- Linux
- 서귀포블루버블
- 블루버블다이브팀
- 현포다이브
- C++
- 스쿠버다이빙
- C# 고급 기술
- Windows
- 블루버블
- ip
- Thread
- C#.NET
- Build
- C
- 블루버블다이빙팀
- 암호화
- 서귀포
- CMake
- 외돌개
- 제주도
- 울릉도
- PowerShell
- C#
- 윈도우
- 리눅스
- DLL
- OpenSource
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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