2012-01-16 3 views
6

나는 CMake를 사용하여 Visual Studio 2010 프로젝트 및 솔루션 파일을 생성합니다. 실제로 나는 다른 설정을 할 수 있었는데, 경고 레벨, 증분 건물 플래그 요법과 같은 을 좋아한다. CMake에서. 그러나 추가 포함 및 라이브러리, VC++ 디렉터리 구성 탭에 나열된 설정할 수 없습니다. 실제로 나는이 디렉토리들을 수동으로 설정해야합니다. CMAKE_INCLUDE_PATH, INCLUDE_DIRECTORY 하지만 아무것도 무슨 일이 생긴 없습니다 :이 Visual Studio Solution에 CMake 포함 및 라이브러리를 추가하는 방법은 무엇입니까?

내가 다음 CMake 변수를 설정하려고 ... 바보 지루한입니다. 프로젝트를 열면 솔루션의 추가 include 디렉토리가 항상 비어 있습니다 (표준 MSVE 설정 만 제공됨).

실행 파일 생성 후에도이 변수를 설정하는 것이 지겹지 만 효과가 없습니다.

내가 cmake 파일의 헤더에 직접 할 것입니다 다음 .deps에서

CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 
PROJECT(${MODULE_NAME}) 
IF (MSVC) 
    # Activate C++ exception handling 
    IF (NOT CMAKE_CXX_FLAGS MATCHES "/EHsc") 
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") 
    ENDIF() 

    # Set Warning level always to 4 
    IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") 
    string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 
    ELSE() 
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") 
    ENDIF() 

    #read path of dependency modules 
    file(READ "msvc.deps" MSVC_PROPERTIES) 
    STRING(REGEX REPLACE ";" "\\\\;" MSVC_PROPERTIES "${MSVC_PROPERTIES}") 
    STRING(REGEX REPLACE "\n" ";" MSVC_PROPERTIES "${MSVC_PROPERTIES}") 

    FOREACH(e ${MSVC_PROPERTIES}) 
    SET(INCLUDE ${INCLUDE} ${e}) 
    MESSAGE(STATUS "[INFO]: Value ${e}") 
    ENDFOREACH(e) 
    INCLUDE_DIRECTORIES(${INCLUDE}) 
ENDIF() 

내가 내 dependeny 모듈의 경로에 추가 한 파일, 라인은 분리 :

c:\binrev\development\boost\1.47\includes 
c:\binrev\repository\modules\brCore\trunk\includes 

두 가지 모두 성공적으로 읽었지만 디렉토리를 내 MSVC 솔루션에 추가로 설정할 수 없습니다. 나는 당신의 질문을 이해 한 경우

안부, 헬 하운드

답변

7

CMake는 당신이 찾고있는 생각 명령이

일부 설정은 변수를 설정함으로써 이루어 지지만, 대부분은 명령을 사용하여 빌드의 일부에 특정 정보를 추가하고 대상에 대한 속성을 설정하여 다소 덜 빈번하게 수행됩니다.

+0

CMake는 잘 설명되어 있지만이 변수는 작동하지 않습니다. 나는 이러한 변수 중 하나를 설정했지만 MSVC 솔루션을 열면 아무 것도 설정되지 않습니다. – Hellhound

+0

또한 SET (ENV $ {PATH} "c : \ test \ ... \")를 사용하여 MSVC 환경 변수 INCLUDE 및 PATH를 설정하려고 시도했지만이 또한 아무 효과가 없습니다. MSVC 솔루션의 디렉터리가 비어 있습니다. – Hellhound

+0

'CMakeLists.txt' 파일에'include_directory (/ path/to/include) '를 추가 한 후에도 설정되지 않았습니까? 타겟을 선언하기 전에'include_directories'를 추가하고 있습니까? (명령은 중요합니다). 만일 그렇다면'CMakeLists.txt' 파일의 일부 또는 전부를 게시 할 수 있습니까?'CMAKE_INCLUDE_PATH' 변수는 컴파일러에서 사용하는 포함 경로와 관련이 없으며 'INCLUDE_DIRECTORY'라는 변수 나 명령이 없습니다. –

2

나는 CMakeLists.txt 어딘가에서 path을 C++ includes paths에 추가한다고 믿는다.

+1

변수가 설정되었지만 아무 일도 일어나지 않습니다. 솔루션에서 includes 디렉토리는 비어 있습니다. 나는 또한 exectuable 세대 후에이 변수를 설정하려고했지만 아무런 효과가 없었습니다. – Hellhound

0

변수 'INCLUDE'는 'SET (INCLUDE $ {INCLUDE} $ {e})'문으로 정의했지만 '$ {INCLUDE}'는 변수가 이전에 정의되었음을 나타냅니다. 어쩌면 당신은 그것에 대해 확신해야합니다.

나는 초보자입니다. 잘못하면 사과드립니다.

+0

include 디렉토리를 추가하는 방법은 [include_directories()] (http://www.cmake.org/cmake/help/v3.0/command/include_directories.html) 명령을 사용하는 것이 좋습니다. –

관련 문제