2016-10-13 3 views
0

저는 CMake 놈이 패키지 설치자를 모으려고하므로 Windows 개발 컴퓨터와 클러스터간에 이동할 수 있습니다.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가 다른 모든 작업을하도록하십시오.

관련 문제