Код компилируется и ссылки просто отлично под Windows, однако на Ubuntu при использовании конструктора boost::timer::auto_cpu_timer timer(short, string);
соединение не удалось.Strange Boost auto_cpu_timer неопределенная эталонная ошибка
Кроме того, также странно, что в Windows мне не нужно ссылаться на библиотеку ускорения chrono, но на Ubuntu требуется.
main.cpp
#include <boost/timer/timer.hpp>
int main()
{
// Link Failed!
//
// main.cpp:(.text.startup+0x96):
// undefined reference to
// `boost::timer::auto_cpu_timer::auto_cpu_timer(
// short,
// std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
// '
boost::timer::auto_cpu_timer timer(3, "Wall time: %w seconds\n");
// Link OK
boost::timer::auto_cpu_timer timer2;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(auto_cpu_timer_test)
aux_source_directory(. SRC_LIST)
# Setup Boost
if (WIN32)
set(BOOST_LIBRARYDIR C:/boost_1_59_0/stage/lib)
set(BOOST_INCLUDEDIR C:/boost_1_59_0)
else()
set(BOOST_LIBRARYDIR /home/me/boost_1_59_0/stage/lib)
set(BOOST_INCLUDEDIR /home/me/boost_1_59_0)
endif()
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME ON)
link_directories(${LINK_DIRECTORIES} ${BOOST_LIBRARYDIR})
include_directories(${INCLUDE_DIRECTORIES} ${BOOST_INCLUDEDIR})
set(CMAKE_BUILD_TYPE "Release")
if(WIN32)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
add_executable(${PROJECT_NAME} ${SRC_LIST})
if (WIN32)
target_link_libraries(${PROJECT_NAME} libboost_system-vc140-mt-s-1_59.lib libboost_timer-vc140-mt-s-1_59.lib)
else()
target_link_libraries(${PROJECT_NAME} libboost_system-mt-s.a libboost_timer-mt-s.a libboost_chrono-mt-s.a)
endif()
Вы правы! Вы решили мою проблему! Большое спасибо!!! – grayfox