Programing

CMake의 디버그 및 릴리스

lottogame 2020. 2. 26. 07:39
반응형

CMake의 디버그 및 릴리스


GCC 컴파일 프로젝트에서

  • 각 대상 유형 (디버그 / 릴리스)에 대해 CMake를 어떻게 실행합니까?
  • CMake를 사용하여 디버그 및 릴리스 C / C ++ 플래그를 어떻게 지정합니까?
  • 주 실행 파일이 컴파일 g++되고 중첩 라이브러리가 하나 있음을 어떻게 표현 gcc합니까?

CMake를 사용하는 경우 일반적으로 "소스 외부"빌드 를 수행하는 것이 좋습니다 . CMakeLists.txt프로젝트의 루트에서을 만드십시오 . 그런 다음 프로젝트의 루트에서

mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make

그리고 Debug(프로젝트의 뿌리에서 다시) :

mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Release/ Debug는 컴파일러에 적절한 플래그를 추가합니다. 도 있습니다 RelWithDebInfoMinSizeRel빌드 구성.


다음 과 같이 변수 변수를 추가 할 수 있는 툴체인 파일 을 지정하여 플래그를 수정 / 추가 할 수 있습니다 .CMAKE_C_FLAGS_DEBUGCMAKE_C_FLAGS_RELEASE

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall")

자세한 내용은 CMAKE_BUILD_TYPE 을 참조하십시오.


세 번째 질문은 정확히 무엇을 요구하는지 잘 모르겠습니다. CMake는 다른 소스 파일에 적합한 컴파일러를 자동으로 감지하고 사용해야합니다.


디버그 / 릴리스 플래그에 대해서는 CMAKE_BUILD_TYPE변수를 참조하십시오 (로 전달 cmake -DCMAKE_BUILD_TYPE=value). 이 같은 값을 얻어 Release, Debug

http://cmake.org/Wiki/CMake_Useful_Variables#Compilers_and_Tools

cmake는 확장자를 사용하여 컴파일러를 선택하므로 파일 이름을 .c로 지정하십시오.

다양한 설정으로이를 무시할 수 있습니다.

예를 들면 다음과 같습니다.

set_source_files_properties(yourfile.c LANGUAGE CXX) 

g ++로 .c 파일을 컴파일합니다. 위의 링크는 C / C ++ 용 특정 컴파일러를 선택하는 방법도 보여줍니다.


CMAKE_CXX_FLAGS문자열을 직접 조작하는 대신 ( string(APPEND CMAKE_CXX_FLAGS_DEBUG " -g3")btw를 사용하여 더 잘 수행 할 수 있음 ) 다음을 사용할 수 있습니다 add_compiler_options.

add_compile_options(
  "-Wall" "-Wpedantic" "-Wextra" "-fexceptions"
  "$<$<CONFIG:DEBUG>:-O0;-g3;-ggdb>"
)

이렇게하면 지정된 경고가 모든 빌드 유형에 추가되지만 지정된 디버깅 플래그 만 DEBUG빌드에 추가됩니다. 컴파일 옵션은 CMake 목록으로 저장되며, 요소를 세미콜론으로 구분하는 문자열 일뿐 ;입니다.


// CMakeLists.txt : 출시

set(CMAKE_CONFIGURATION_TYPES "Release" CACHE STRING "" FORCE)

// CMakeLists.txt : 디버그

set(CMAKE_CONFIGURATION_TYPES "Debug" CACHE STRING "" FORCE)

cmake --build {$PWD} --config <cfg>다중 구성 도구의 경우 다음 을 실행할 수도있는 경우 재생성하지 않고 다른 구성을 구축하려면 <cfg>ex를 선택하십시오 . 디버그, 릴리스, MinSizeRel, RelWithDebInfo

https://cmake.org/cmake/help/v2.8.11/cmake.html#opt%3a--builddir

참고 URL : https://stackoverflow.com/questions/7724569/debug-vs-release-in-cmake



반응형