I'm trying to build an application with boost library by creating a MSVC9.0 project files with CMake.
I get the following error:
Error 3 fatal error LNK1104: cannot open file 'libboost_system-vc90-mt-gd-1_44.lib'
Here is the CMake configuration
cmake_minimum_required(VERSION 2.8)
PROJECT( TestProject)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
set(BOOST_ROOT "D:/boost_1_44_0")
set(Boost_USE_MULTITHREADED ON)
FIND_PACKAGE( Boost 1.44.0 REQUIRED unit_test_framework system)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${BOOST_ROOT})
LINK_DIRECTORIES(${LINK_DIRECTORIES} "D:/boost_1_44_0/stage/lib")
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
SET(RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
ADD_EXECUTABLE(testapp
main.cpp)
TARGET_LINK_LIBRARIES(testapp
${Boost_SYSTEM_LIBRARY}
)
SET_TARGET_PROPERTIES( testapp PROPERTIES DEBUG_POSTFIX "d" )
I have built boost for static and shared (debug and release) with following options.
bjam toolset=msvc variant=debug link=shared runtime-link=shared threading=multi --build-type=complete stage
bjam toolset=msvc variant=release link=shared runtime-link=shared threading=multi --build-type=complete stage
bjam toolset=msvc variant=debug link=static runtime-link=static threading=multi --build-type=complete stage
bjam toolset=msvc variant=release link=static runtime-link=static threading=multi --build-type=complete stage
I'm not sure what I'm missing in the configuration. Any suggestions?
Thanks.
Best Answer
First of all, did you check if "'libboost_system-vc90-mt-gd-1_44.lib" really exists in your stage-dir "D:/boost_1_44_0/stage/lib"?
Second: the most common problem I used to have with Boost and CMake's find_package( Boost) was interference with the auto-linking. You could disable it by adding a definition to your compile flags
but then you probably will need to specify if you want to link to the dynamic or static version
Of course, you could always check the generated visual studio files to see which link-libraries are actually added to your project.