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
는 컴파일러에 적절한 플래그를 추가합니다. 도 있습니다 RelWithDebInfo
및 MinSizeRel
빌드 구성.
다음 과 같이 변수 와 변수를 추가 할 수 있는 툴체인 파일 을 지정하여 플래그를 수정 / 추가 할 수 있습니다 .CMAKE_C_FLAGS_DEBUG
CMAKE_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
'Programing' 카테고리의 다른 글
Visual Studio에서 솔루션 및 디렉토리의 이름을 바꾸는 올바른 방법 (0) | 2020.02.26 |
---|---|
Flexbox 어린이를 부모의 100 % 높이로 만드는 방법은 무엇입니까? (0) | 2020.02.26 |
어떤 MVC 버전을 사용하고 있습니까? (0) | 2020.02.26 |
alloca () 사용이 왜 좋은 습관으로 간주되지 않습니까? (0) | 2020.02.26 |
Oracle에서 AUTO_INCREMENT로 ID를 만드는 방법은 무엇입니까? (0) | 2020.02.26 |