2012-02-20 12 views
0

私はCmake用に作られたプロジェットのワンクリックビルドを作成する必要があります(既にLinux上で動作しています)それらをコンパイルします。 (win64)ワンクリックでCmake&Msbuild(vs2010)バッチファイルでプロジェクトをビルド

  1. もし私がprojets CMakeLists.txtを変更したくない場合は、
  2. 私はすでにVS2010 GUIでプロジェクトをビルドしています。私はfolowingを変更しなければならなかった: a。構成プロパティ - C++を変更する必要がありました - コマンドライン:/ DWNT/D "CAD_STATIC"を追加しました b。リンカーの入力 - 追加の依存関係 - 構成プロパティーに長いライブラリーのリストを追加する必要がありました。 c。これらのライブラリのライブラリディレクトリを追加します d。インクルードディレクトリを追加します。
  3. プロジェクトはコンパイルされ、正常に機能しました。

ここでは、バッチコマンドだけで同じことをする必要があります。私はすでにとcmakeのとプロジェクトファイルをビルドする :

cmake ..\projectsource -G "Visual Studio 10 Win64" -DGLEW_LIBRARY:FILEPATH=%myroot%\glew\trunk\lib\Release\glew.lib -DGLUT_glut_LIBRARY:FILEPATH=%myroot%\freeglut\trunk\lib\Release\freeglut.lib -DMKL_LIBRARIES:FILEPATH=%myroot%\mkl\em64t\lib\mkl_core.lib -DOpenCascade_INCLUDE_DIR:PATH=%myroot%\OpenCascade 

今、私は#2の下にいたものと同じ処理を行い、「devenvをproject.sln/USEENV」のようなコマンドを必要としています。すべてのヘルプは非常に高く評価されて

set "include=%myroot%\glew\trunk\include;%myroot%\freeglut\trunk\include;%myroot%\mkl\include;%myroot%\qt\include;%myroot%\OpenCascade\include\oce;%myroot%\trimo\src\CadModel;%include%" 
set "lib=%myroot%\glew\trunk\lib\Release\*.lib;%myroot%\freeglut\trunk\lib\Release\*.lib;%myroot%\mkl\em64t\lib\*.lib;%myroot%"\qt\lib\*.lib;%myroot%\OpenCascade\Win64\lib\*.lib;%lib%" 

:私はENVを試みた

は& libのようにあります。私は立ち往生している。おかげ

編集:私は別の問題を抱えて :

  1. 私は自動にcmakeのでproject.slnにリンクされますライブラリのリンクを解除するにはどうすればよいですか?
  2. "lib =%myroot%\ glew \ trunk \ lib \ Release * .lib;すべてのlibをvs2010 gui -Linkerの入力に追加するとuのようなすべての.libファイルがリンクされます - その他の依存関係?

答えて

1

あなたはすでに必要なincludelib変数を設定している場合は、おそらく欠けているものすべてがある:

set "cl=/DWNT /DCAD_STATIC" 

、あなたは

devenv project.sln /useenv /build 
を使用することができるはずです

必要に応じて、ライブラリの検索パスを設定するためのlibpathもあります。さらに質問へ

回答

  1. 私はそれを行う方法を知りません。
  2. いいえ、私はあなたが元の質問でそれをしていたことに気付かなかった - ごめんなさい! LIB env varは、libsが見つかる可能性のある検索パスを設定します。実際のlib自体への完全なパスではありません。

あなたが達成しようとしているのは、まさにCMakeが卓越したシナリオです。

SET(MY_ROOT <path to %myroot%>) 

FIND_LIBRARY(GLEW_LIBRARY glew ${MY_ROOT}/glew/trunk/lib/Release) 
IF(NOT GLEW_LIBRARY) 
    MESSAGE(FATAL_ERROR "glew.lib not found in ${MY_ROOT}/glew/trunk/lib/Release") 
ENDIF() 

FIND_LIBRARY(GLUT_glut_LIBRARY freeglut ${MY_ROOT}/freeglut/trunk/lib/Release) 
IF(NOT GLUT_glut_LIBRARY) 
    MESSAGE(FATAL_ERROR "freeglut.lib not found in ${MY_ROOT}/freeglut/trunk/lib/Release") 
ENDIF() 

FIND_LIBRARY(MKL_LIBRARIES mkl_core ${MY_ROOT}/mkl/em64t/Release) 
IF(NOT MKL_LIBRARIES) 
    MESSAGE(FATAL_ERROR "mkl_core.lib not found in ${MY_ROOT}/mkl/em64t/Release") 
ENDIF() 

INCLUDE_DIRECTORIES(${MY_ROOT}/OpenCascad) 

ADD_DEFINITIONS(-DWNT -DCAD_STATIC) 

TARGET_LINK_LIBRARIES(<your target> 
         ${GLEW_LIBRARY} 
         ${GLUT_glut_LIBRARY} 
         ${MKL_LIBRARIES} 
         <any other libs...> 
        ) 

これは、すべてのWindowsである:それはおそらく

:-)問題を解決する私があなただったら、私はのようなものが含まれるようにCMakeLists.txtを編集したいのですときは、ここにCMakeを戦っています固有、リリース固有。あなたはFIND_LIBRARYの呼び出しをUnix/OSXオプションにも適合させることができます。あるいは、これをIF(WIN32) ... ENDIF()ブロックで囲むことができます。あなたは、あまりにもデバッグバージョンのFIND_LIBRARY呼び出し、必要に応じて(それらに異なる変数名を与える)と同じようにそれらを追加行うことができます

TARGET_LINK_LIBRARIES(<your target> 
         optimized ${GLEW_LIBRARY} 
         optimized ${GLUT_glut_LIBRARY} 
         optimized ${MKL_LIBRARIES} 
         debug ${GLEW_LIBRARY_DEBUG} 
         debug ${GLUT_glut_LIBRARY_DEBUG} 
         debug ${MKL_LIBRARIES_DEBUG} 
         <any other libs...> 
        ) 

をまた何からあなたが好きなライブラリを削除することができますTARGET_LINK_LIBRARIESコールで渡されたライブラリのリストを変更して、必要なターゲットを選択します。

あなたは、ディレクトリ内のすべての* .libファイルをつかむこのような何か追加したい場合は:あなたはGLOB呼び出しを使用するのです、あなたはまた、デバッグリリースが必要な場合は

FILE(GLOB ALL_GLEW_LIBS "${MY_ROOT}/glew/trunk/lib/Release/*.lib") 
TARGET_LINK_LIBRARIES(<your target> ${ALL_GLEW_LIBS}) 

を、確認してくださいそれぞれのリストアイテムの接頭辞として、debugまたはoptimizedを適切に使用します。

FOREACH(GLEW_ITR ${ALL_GLEW_LIBS_RELEASE}) 
    SET(ALL_GLEW_LIBS ${ALL_GLEW_LIBS} optimized ${GLEW_ITR}) 
ENDFOREACH() 

FOREACH(GLEW_ITR ${ALL_GLEW_LIBS_DEBUG}) 
    SET(ALL_GLEW_LIBS ${ALL_GLEW_LIBS} debug ${GLEW_ITR}) 
ENDFOREACH() 

TARGET_LINK_LIBRARIES(<your target> ${ALL_GLEW_LIBS}) 

このすべてがCMakeによって提供されている場合は、バッチスクリプトにenv変数を設定する必要はありません。あなただけの操作を行います。

devenv project.sln /build 
+0

はどうもありがとうございました! – pazduha

関連する問題