Связывание статической надстройки со статической библиотекой под VS2012 и Win32 / 64

Я пытаюсь создать статическую библиотеку, которая будет выпущена как API для сетевого устройства. Я могу успешно скомпилировать и связать библиотеку для создания выходных файлов .lib и переместить их в структуру каталогов следующим образом:

EyeLib
 L-Include
 |  L-PublicInterface.h
 L-Lib
 |  L-debug
 |  |   L-MyLib.lib
 |  |   L-MyLib.pdb
 |  L-release
 |      L-MyLib.lib
 L-MyLibConfig.cmake

Где файл MyLibConfig.cmake чрезвычайно прост и содержит:

# the header file is relative to this cmake file, so get the path.
GET_FILENAME_COMPONENT( MyLib_TOPLEVEL_DIR ${CMAKE_CURRENT_LIST_FILE} PATH )
SET( MyLib_INCLUDE_DIR ${MyLib_TOPLEVEL_DIR}/include )

IF( WIN32 )
  FIND_LIBRARY( MyLib_DEBUG_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/debug )
  FIND_LIBRARY( MyLib_RELEASE_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/release )
  SET( MyLib_LIBRARIES optimized ${MyLib_RELEASE_LIBRARY} debug ${MyLib_DEBUG_LIBRARY} )
ENDIF( WIN32 )
IF( UNIX )
  FIND_LIBRARY( MyLib_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib )
  SET( MyLib_LIBRARIES "${MyLib_LIBRARY}" )
  MARK_AS_ADVANCED( MyLib_LIBRARY )
ENDIF( UNIX )

# handle the QUIETLY and REQUIRED arguments
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MyLib DEFAULT_MSG MyLib_LIBRARIES MyLib_INCLUDE_DIR)

MARK_AS_ADVANCED( MyLib_INCLUDE_DIR )

Эта структура сборки работала для некоторых тестовых библиотек, которые я создавал в прошлом, но я получаю ошибку ссылки, когда пытаюсь использовать ее для создания простого тестового приложения, говорящего «ошибка LNK1104: невозможно открыть файл» libboost_thread-vc110- м-s-1_54.lib»

Я могу получить тестовое приложение для успешной сборки и запуска, если добавлю его в тот же проект, что и сборка библиотеки. Я предполагаю, что это связано с тем, что сборка библиотеки находит дополнительные библиотеки для ссылки, поэтому она распространяется на исполняемые файлы в проекте.

Я создал Boost 1.54 с b2 link = static runtime-link = static threading = multi option = debug, release --layout = tagged и связал сборку библиотеки и сборки тестового приложения со статической средой выполнения MSVC (/ MT).

Может ли кто-нибудь предложить некоторую помощь / совет / дальнейшие тесты с этим? Мне нужно убедиться, что все компоненты Boost встроены в библиотеку API, поэтому нашим клиентам не нужно устанавливать boost самостоятельно.

Дополнительная информация

В случае, если это полезно, вот файл cmakelists.txt из сборки библиотеки:

set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib")

set(Boost_USE_STATIC_LIBS   ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost REQUIRED COMPONENTS system date_time regex thread chrono)
if(NOT WIN32)
  list(APPEND Boost_LIBRARIES pthread)
endif()

include_directories(${Boost_INCLUDE_DIRS})

FILE(GLOB srcs *.cpp)
FILE(GLOB headers *.h)
set(libname MyLib)

set(deps ${Boost_LIBRARIES})

#To allow compilation. std=c++0x is for accepting the access to enums, which usually is just accepted with Visual Studio
IF( NOT WIN32 )
  set (CMAKE_CXX_FLAGS "-fpermissive -std=c++0x")
ENDIF( NOT WIN32 )

SOURCE_GROUP( ${libname} FILES ${srcs} )
SOURCE_GROUP( "${libname}\\Hdr" FILES ${headers} )
add_library(${libname} ${srcs} ${headers})
target_link_libraries( ${libname} ${deps} )

Ответы на вопрос(1)

Ваш ответ на вопрос