개인 자료 정리 홈페이지 입니다.

Note > 개발환경과도구정리cmake

By a3040, Published on 8/23/2024, 9

- cmake/cmake-gui


- 타겟이란? 만들려고 하는 목적물 이름

add_executable(Tutorial tutorial.cxx)


이 경우 윈도우 환경에서 Tutorial.exe 파일이 만들어지고 CMakeLists.txt에서 타켓이름은 Tutorial임


CMakeLists.txt

cmake_minimum_required(VERSION 3.10) #버전표시
project(Tutorial) #프로젝트명 표시
add_executable(Tutorial tutorial.cxx) # 실행파일 만들기


윈도우에서 CMake사용시 cl인지 gcc인지?

message(STATUS "C Compiler: ${CMAKE_C_COMPILER}")

message(STATUS "C++ Compiler: ${CMAKE_CXX_COMPILER}")

message(STATUS "C Compiler ID: ${CMAKE_C_COMPILER_ID}")

message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")


현재 타겟의 컴파일 옵션은?

#현재 CMakeListtxt에서 설정된것

get_target_property(TARGET_COMPILE_OPTIONS my_target COMPILE_OPTIONS)

#모든 타겟의 옵션 상속된것까지 /

get_target_property(ALL_COMPILE_OPTIONS my_target INTERFACE_COMPILE_OPTIONS) 


add_definitions()

 > 컴파일러에 전달할 전처리기 매크로(-D 옵션 포함)나 컴파일러 옵션을 추가

 

특정 컴파일러 대상으로

target_compile_definitions(my_target PRIVATE _UNICODE) 


add_definitions(-D_UNICODE) #cl에 /D_UNICODE 로 전달, GCC/Clang: -D_UNICODE 

이건 안됨 ? add_definitions(_UNICODE) #cl에 문자열로 전달됨


if (MSVC)  #msvc빌드일때 있음
  add_definitions(/D_UNICODE) # MSVC는 /D 사용
  #안됨?  add_definitions(/Wall)    # MSVC는 /Wall 사용
  add_compile_options(/Wall) 
else()
  add_definitions(-D_UNICODE) # GCC/Clang은 -D 사용
  #안됨?  add_definitions(-Wall)    # GCC/Clang은 -Wall 사용
  add_compile_options(-Wall) 
endif()



add_definitions(-D_XX=1) 은 global scop #define _XX 1 와 동일



CMake Tutorial — CMake 3.30.2 Documentation

Continue Reading
Note > makerSIAM전자 시계, 컴퓨터 시간(RTC)가 유지된는 이유는

By a3040, Published on 10/10/2024,

전자 시계, 컴퓨터 시간이 유지된는 이유는?

- 컴퓨터 시간이 유지된는 이유는 

RTC모듈이 내장되어 있음.

- RTC모듈이 시간을 유지하는 방법은?

> 만들어질때 UTC 기준시간으로 초기화 되고, 그 이후는 자체 전원(보통 컴 보드에서 보이는 동그란 건전지)으로 유지되면서 

> 틱을 지속적으로 발생해서 초기화시간 + 만들어진 이후 틱개수 = 현재시간을 계산한다.


RTC 모듈은 제조 시점에 기준이 되는 UTC 시간으로 초기화됩니다. 이후에는 자체적으로 틱(tick)을 발생시켜 시간을 유지합니다. 구체적으로는 다음과 같은 과정이 있습니다:

  1. 초기화: RTC 모듈이 제조될 때 또는 처음 설정될 때 기준이 되는 UTC 시간으로 초기화됩니다.

  2. 틱 발생: RTC 모듈은 내부 클럭을 사용하여 초 단위로 틱을 발생시킵니다. 이 틱은 일정한 주기로 발생하며, 이를 통해 시간을 계산합니다.

  3. 시간 유지: RTC 모듈은 배터리 백업을 통해 전원이 꺼져도 시간을 계속 유지합니다. 내부 클럭이 계속 작동하여 틱을 발생시키기 때문에 시간이 정확하게 유지됩니다.

  4. 시간 읽기: 마이크로컨트롤러나 컴퓨터는 RTC 모듈로부터 현재 시간을 읽어와서 필요에 따라 타임존 변환을 통해 로컬 시간을 계산합니다.

Continue Reading