My CMakeFiles.txt wygląda następująco:Linking Boost biblioteka z Boost_USE_STATIC_LIB OFF na Windows
cmake_minimum_required (VERSION 2.6)
# Set warnings on and enable debugging
SET(CMAKE_C_FLAGS "-Wall -q")
include(FindBoost)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.57.0 COMPONENTS system filesystem REQUIRED)
if(Boost_FOUND)
message(STATUS "Boost found!")
include_directories(${Boost_INCLUDE_DIRS})
add_executable(foo main.cpp)
# Needed for asio
if(WIN32)
target_link_libraries(foo wsock32 ws2_32)
endif()
target_link_libraries(foo ${Boost_LIBRARIES})
endif()
I renderować projekt dla Visual Studio 2013 64-bit:
cmake -G "Visual Studio 12 Win64" -DBOOST_LIBRARYDIR=D:\Development\Tools\boost_1_57_0\stage\x64\lib ..\KServer
Wyjście jest:
-- The C compiler identification is MSVC 18.0.31101.0
-- The CXX compiler identification is MSVC 18.0.31101.0
-- Check for working C compiler using: Visual Studio 12 2013 Win64
-- Check for working C compiler using: Visual Studio 12 2013 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 12 2013 Win64
-- Check for working CXX compiler using: Visual Studio 12 2013 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.57.0
-- Boost version: 1.57.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- Boost found!
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Development/Private/C++/KServerProject
To wszystko dobrze i dobrze.
Problem zaczyna się tutaj:
Kiedy mogę zmienić plik cmake używać:
set(Boost_USE_STATIC_LIBS OFF)
I wtedy pojawia się następujący błąd w Visual Studio podczas budowania:
error LNK1104: cannot open file 'libboost_filesystem-vc120-mt-gd-1_57.lib' D:\Development\Private\C++\KServerProject\src\LINK foo
Sprawdzanie Property Pages
w studiu biblioteka jest dodawana jako zależność:
Podczas ręcznego dodawania folder D:\Development\Tools\boost_1_57_0\stage\x64\lib
do Additional Library Directories
Buduje porządku.
Jak mogę to zrobić, aby utworzyć projekt przy użyciu dynamicznych bibliotek?
W mojej kompilacji doładowania, której używam z cmake, mam 3 foldery w katalogu głównym kompilacji. buduj, dołącz i lib. Chociaż buduję ze źródła. – drescherjm
Używam następującego typu kompilacji z bjam '--build-type = complete stage install' – drescherjm
To nie jest problem z doładowaniem. Zbudowałem z 'complete'. Potrzebuję projektu, używając boost do pracy z dynamicznym łączeniem podczas generowania za pomocą cmake. – Asken