2012-01-16 29 views
6

私はCMakeを使ってVisual Studio 2010プロジェクトとソリューションファイルを生成します。実際には、私は別の設定、 警告レベルのような、増分の建物の旗の法律を設定することができます。 CMakeから。しかし、追加のインクルードとライブラリを設定することはできません。 がVC++ディレクトリ設定タブに表示されます。実際には、私はこれらのディレクトリを手動で設定する必要があります。これは愚かな と退屈な...Visual Studio SolutionにCMakeインクルードとライブラリを追加するには?

私は次のCMake変数を設定しようとしました:CMAKE_INCLUDE_PATH、INCLUDE_DIRECTORY 何も起こらないです。私がプロジェクトを開くと、ソリューションの追加インクルードディレクトリは常に空です(標準のMSVE設定のみが与えられます)。

実行可能ファイルの作成後にこの変数を設定するのも疲れましたが、これも効果がありません。

これは私がcmakeの ファイルのヘッダに直接何をすべきかです:私は ラインが分離、私dependenyモジュールのパスに追加した.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() 

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のどこかでinclude_directories ("path")pathをC++インクルードパスに追加していると思います。

+1

これらの変数は設定されていますが、何も起こりません。このソリューションでは、インクルードディレクトリは空です。私はまた、exectuable世代の後にこの変数を設定しようとしましたが、効果はありません。 – Hellhound

0

変数 'INCLUDE'は 'SET(INCLUDE $ {INCLUDE} $ {e})'というステートメントで定義されましたが、 '$ {INCLUDE}'は変数が前に定義されていることを示します。多分あなたはそれについて確かめなければならないでしょう。

私は単なる初心者です。間違っていると、私は謝罪しています。

+0

私はインクルードディレクトリを追加するための推奨される方法は、コマンド[include_directories()](http://www.cmake.org/cmake/help/v3.0/command/include_directories.html)を使用していると思います。 –

関連する問題