2012-05-13 17 views
2

cmake not finding Qt4CMakeの、QtとCMAKE_INCLUDE_PATH

どのようにCMAKE_INCLUDE_PATHを使うのですか?私はそれを試してみたが、私はエラーだ:ロングコード....おかげで申し訳ありません

cmake_minimum_required(VERSION 2.8) 

set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../cmake_modules) 

project(vrvu) 

find_package(OpenGL REQUIRED)(CMAKE_INCLUDE_PATH <--- this is where I'm getting an error 
C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\bin)find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED) 
include(${QT_USE_FILE}) 
find_package(Coin3 REQUIRED) 
find_package(Quarter REQUIRED) 

add_subdirectory(bullet-2.77) 
add_subdirectory(starlight) 

file(GLOB SOURCES "*.cpp" "*.cxx" "*.h" "*.hpp") 

include_directories(${OPENGL_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${COIN_INCLUDE_DIR} ${QUARTER_INCLUDE_DIR} "./bullet-2.77/src" "./starlight") 
link_directories(${QT_LIB_DIR} ${COIN_LINK_DIRECTORIES} ${QUARTER_LINK_DIRECTORIES}) 

add_definitions(${QT_DEFINITIONS} ${COIN_DEFINITIONS} ${QUARTER_DEFINITIONS}) 

add_executable(vrvu ${SOURCES}) 
target_link_libraries(vrvu ${OPENGL_LIBRARIES} ${QT_LIBRARIES} ${COIN_LIBRARIES} ${QUARTER_LIBRARIES} LinearMath BulletCollision starlight) 

を!

+0

なぜ説明なしのdownvoteですか?役に立たない。 – Fraser

答えて

4

ここにいくつかの問題があります。

私はそれだけでタイプミスだが、あなたはちょうどfind_packageコマンドの最後にCMAKE_INCLUDE_PATHを設定するための命令を追加することができないならば、あなたは別のsetコマンドを必要とわからない:

find_package(OpenGL REQUIRED) 
set(CMAKE_INCLUDE_PATH "C:\\QtSDK\\Desktop\\Qt\\4.8.0\\msvc2010\\bin") 
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL REQUIRED) 

に留意されたいです。バックスラッシュを使用している場合は、指定されたパスに区切り文字をエスケープする必要があります。また、Windowsの場合でも、二重バックスラッシュの代わりに単一のスラッシュを使用することもできます。この場合、パスを引用符で囲むことは効果がありませんが、パスにスペースが含まれている場合にはうまくいく習慣です。 CMAKE_INCLUDE_PATHを設定


find_pathfind_fileコールのみを行う場合CMakeのをしようとするパスのリストを拡張します。これはfind_packageコールには役立ちますが、さらにこの場合はfind_XXXコマンドすべての往路を延長するCMAKE_PREFIX_PATHを設定することがあります。

set(CMAKE_PREFIX_PATH "C:\\QtSDK\\Desktop\\Qt\\4.8.0\\msvc2010") 


次に、file(GLOB SOURCES "*.cpp" "*.cxx" "*.h" "*.hpp"):それは実行ファイルを検索するときに、それがCMAKE_PREFIX_PATHに追加されますので、あなたは、パスから「\ビン」を取り除くために必要があると思いますを意味します。これは実際にはエラーではありませんが、ソースファイルのリストを作成するにはこのテクニックを使用するのが一般的ですが、ファイルがソースツリーに追加または削除された場合、CMakeは「知識」を持たず、走る推奨される方法は、追加または削除によって自動的にCMakeが再実行されるように、各ソースファイルを手作業でCMakeLists.txtに追加することです。

また、 "SOURCES"もCMakeターゲットのプロパティを表すので、変数名の貧しい選択です。


眉をひそめ-時に実際もう一つは、link_directoriesの使用です。ドキュメントには、それが通常必要でない理由が示されています。


add_definitions線も不要とすることができます。 Qtは定義を定義しますが、include(${QT_USE_FILE})the documentation for FindQt4を参照)を実行したときにすでに追加されているため、ここで2回追加します。私はCoin3やQuarterに慣れていませんが、実際には必要なプリプロセッサ定義を生成しないかもしれません。

message("COIN_DEFINITIONS: ${COIN_DEFINITIONS}") 
message("QUARTER_DEFINITIONS: ${QUARTER_DEFINITIONS}") 

(対応するfind_packageコール後)を追加すると、内容を確認できます。これらが空の場合は、add_definitionsコールを削除できます。


変数${COIN_LIBRARIES}${QUARTER_LIBRARIES}これらのLIBSへの完全なパスを指定すると仮定するとは、その後、私はあなたが行ってもいいことだと思います。