- 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)
add_definitions(/D_UNICODE)
add_compile_options(/Wall)
else()
add_definitions(-D_UNICODE)
add_compile_options(-Wall)
endif()
add_definitions(-D_XX=1) 은 global scop #define _XX 1 와 동일
외부 dll이 release로 되어 있어서 나도 Release 컴파일 할때 msvc 컴파일 옵션 추가하기
target_compile_options(${TARGET} PRIVATE /Od /Zi /Gy)
target_link_options(${TARGET} PRIVATE /DEBUG /OPT:REF /OPT:ICF)
CMake Tutorial — CMake 3.30.2 Documentation