2016-10-13 10 views
0

私は私のWindows開発マシンと私のクラスターの間を移動することができますので、私はCMake noobパッケージインストーラをまとめようとしています。CMakeデバッグライブラリを見つけることができません

私は私のファイル(例)

-Primary 
     --Library Source 
      --CMakeLists.txt 
      --src1.cpp 
      --src1.h 
     --Application Source 
      --CMakeLists.txt 
      --src1.cpp 
      --src1.h 
     --CMakeLists.txt 

各CMakeLists.txtのための次のディレクトリツリーは プライマリ/ CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8) 
PROJECT(BloodVesselRadiationDamageSimulations CXX) 

SET(FIND_LIBRARY_USE_LIB64_PATHS true) 
SET(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}) #only for testing 
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_ROOT}/ ${CMAKE_SOURCE_DIR}/cmake/Modules/") 

FIND_PACKAGE(OpenMP) 
FIND_PACKAGE(MPI) 
FIND_PACKAGE(HDF5) 
FIND_PACKAGE(GTest) 

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") 
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") 

SET(CMAKE_DEBUG_POSTFIX _d) 
ADD_SUBDIRECTORY(Source) 
ADD_SUBDIRECTORY(SourceUnitTest) 

ライブラリソース/ CMakeLists.txt

でいます
ADD_LIBRARY(VesselProjectBaseLibrary STATIC Src1.cpp 
              Src1.h) 
INSTALL(TARGETS VesselProjectBaseLibrary DESTINATION x64/Debug CONFIGURATIONS Debug) 
INSTALL(TARGETS VesselProjectBaseLibrary DESTINATION x64/Release CONFIGURATIONS Release|RelWithDebInfo) 

アプリケーションソース/ CMakeLists.txt

INCLUDE_DIRECTORIES("${GTEST_INCLUDE_DIRS}") 
ADD_EXECUTABLE (SourceUnitTests Src1.cpp 
           Src1.h) 

TARGET_LINK_LIBRARIES(SourceUnitTests ${GTEST_LIBRARY}) 
TARGET_LINK_LIBRARIES(SourceUnitTests debug VesselProjectBaseLibrary_d optimized VesselProjectBaseLibrary) 

プロジェクトを正しく生成することができました。私はプロジェクトのすべての正しいファイルを参照してください。私はデバッグビルドをコンパイルするために行くときしかし、私は次のエラーを取得する:

1>ipo: : error #11018: Cannot open VesselProjectBaseLibrary_d.lib 
1>LINK : fatal error LNK1104: cannot open file 'VesselProjectBaseLibrary_d.lib' 

私は私のリリースは、すべてが完璧に動作し、コンパイルが成功したビルドしてコンパイルする場合。ライブラリは両方のビルドで正常にコンパイルされます。

答えて

1

プロジェクト内で作成されたライブラリにリンクするときは、ライブラリファイル、ライブラリターゲット名を指定する必要がありません。 CMakeのは、適切なファイル名、パスおよび他の事を気にされます:

TARGET_LINK_LIBRARIES(SourceUnitTests VesselProjectBaseLibrary) 

変数CMAKE_DEBUG_POSTFIX図書館のファイル名に影響します。ファイルVesselProjectBaseLibrary_d.libは実際にデバッグビルドで作成されますが、リンカーによって自動的には見つかりません。もう一度、ターゲット名を使用してCMakeに他のすべての作業をさせます。

関連する問題