2011-03-05 2 views
3

는 다음과 같은 상황을 상상해 대상 :CMake는 설정 질문

내가 가진 "프로젝트"폴더, 내가 "SRC"폴더 2 개 파일 "하여 1.cpp"와 "2.cpp"가이 폴더입니다. 모든 단일 .cpp는 단일 실행 파일을 생성합니다.

  • 내가 구축하도록 지정 실행 "1"또는 "2"또는 둘 모두
  • 내가 디버그의 모든 실행 파일을 구축하도록 지정 : cmake가 메이크 파일을 생성 한 후 나는 다음을 수행 할 수 있도록하려면 모드
  • 내가
  • 내가 다음을 작성

그래서 난 할 수 있도록하려면 릴리스 및 디버그 모드에서 모든 실행 파일을 구축하도록 지정 해제 모드에서 모든 실행 파일을 구축하도록 지정 :

  • (C) 만들기/아무것도 1
  • (C) 만들기/아무것도 2
  • (C)/아무것도 모두 해제 할
  • (C) 만들기/아무것도 모든 디버그
  • (c) make/anything all-debug-and-release

가장 좋은 방법은 무엇입니까? 감사합니다.

+0

cmake 파일에 디버그/릴리스 모드를 지정하거나 make를 실행할 때 (cmake가 패키지/tarball/무엇이든 생성 한 경우 true가 아님 - 아직 필요하지 않음)를 지정하는 것은 드문 경우입니다. 보통 'cmake-gui'로'CMAKE_BUILD_TYPE'을 지정하여 특정 빌드를 설정할 때 릴리즈/디버그를 지정합니다. 당신은'if'를 사용하여 cmake 파일에있는 것을 기반으로 항목을 포함/제외하도록 빌드 유형을 점검 할 수 있습니다. 나는 이것을하지 않지만 Linux에서 win32 특정 코드를 작성하는 것을 피하기 위해'if (CMAKE_HOST_WIN32) '를 사용합니다. 원칙은 동일합니다. – Steve314

+0

한 번에 여러 구성을 작성하기 위해 필자는 항상 별도의 빌드 트리를 사용하고 스크립트를 사용하여 각 폴더에서 make를 호출했습니다. 나는 그것을 좋은 방법이라고 부르지 않을 것이다. 그러나 그것은 일을 끝낸다. – Steve314

+0

답장을 보내 주셔서 감사합니다. 한 번에 여러 구성을 작성하는 것에 대한 또 다른 질문을 게시 할 것입니다. –

답변

3

add_subdirectory을 사용하여 "src"디렉토리에 대해 알고있는 최상위 CMakeLists.txt가 루트에 필요합니다. 그런 다음 "src"에서 실행 파일을 컴파일하는 방법을 지정하는 다른 CMakeLists.txt가 필요합니다. 이것은 그 자체 예를 들어, 말을하는 것을 가능하게 할 것이다 : 그것은 변수 CMAKE_BUILD_TYPE를 통해 cmake 지정할 수 있습니다 디버그/릴리즈 모드로

make 1 2 

합니다. 변수가 지정되지 않은 경우하지만 일반적으로, 최고 수준에서 디버그 또는 릴리스 모드를 지시 :

IF(NOT CMAKE_BUILD_TYPE) 
    SET(CMAKE_BUILD_TYPE Debug) 
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG") 
ENDIF(NOT CMAKE_BUILD_TYPE) 
CMakeLists.txt을 수정하지 않고 빌드 형식을 편집하는 또 다른 방법은하는 것입니다

make edit_cache 

변수들과 함께 ncurses 대화 상자가 열리 며 그 중 CMAKE_BUILD_TYPE이 표시됩니다.