簡體   English   中英

C ++,Mac OS X,Xcode 8:編譯Boost:將部署目標設置為OS X 10.11

[英]C++, Mac OS X, Xcode 8 : Compile Boost : Set deployment target to OS X 10.11

我正在嘗試在Mac OS X 10.11.6上使用Boost CPP庫。 我從官方SourceForge存儲庫下載了1.62版本的Boost。 提取並構建它的方法如下: http : //www.boost.org/doc/libs/1_62_0/more/getting_started/unix-variants.html

基本上,我進入目錄並運行“ bootstrap.sh”和“ b2”腳本。

然后,我創建了一個簡單的C ++程序:

#include <iostream>
#include <string>

#include <boost/algorithm/string.hpp>
#include <boost/regex.hpp>

int main() {
  std::string str1(" hello world! ");
  boost::to_upper(str1);

  std::cout << str1 << std::endl;

  std::string s = " Boost Libraries ";
  boost::regex expr{"\\s"};
  std::string fmt{"_"};
  std::cout << boost::regex_replace(s, expr, fmt) << '\n';

  return 0;
}

並嘗試使用以下CMake文件進行構建

cmake_minimum_required(VERSION 2.8.9)

set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++")

project(app_project)

set(Boost_USE_STATIC_LIBS ON) 
set(Boost_USE_MULTITHREADED ON)  
set(Boost_USE_STATIC_RUNTIME ON) 

find_package(Boost 1.62.0 COMPONENTS regex) 

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS}) 
    add_executable(myapp main.cpp)
    target_link_libraries(myapp ${Boost_LIBRARIES})
endif()

當我制作程序時,收到以下警告:

ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(instances.o)) was built for newer OSX version (10.12) than being linked (10.11)
ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(regex.o)) was built for newer OSX version (10.12) than being linked (10.11)
ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(regex_traits_defaults.o)) was built for newer OSX version (10.12) than being linked (10.11)
ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(regex_raw_buffer.o)) was built for newer OSX version (10.12) than being linked (10.11)
ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(cpp_regex_traits.o)) was built for newer OSX version (10.12) than being linked (10.11)
ld: warning: object file (/Users/pritam/opt/boost_1_62_0/stage/lib/libboost_regex.a(static_mutex.o)) was built for newer OSX version (10.12) than being linked (10.11)

我在此計算機上安裝了XCode 8。 似乎在構建Boost時,它將部署目標設置為OS X 10.12。

所以問題是:

構建Boost時如何將部署目標設置為OS X 10.11?

要將最低OSX版本定位為低於當前要構建的OSX版本,您需要設置-mmacosx-version-min選項。 因此,如果使用toolset=darwin ,則需要構建為:

b2 macosx-version-min=10.11 ...

由於該工具集對OSX min版本具有特殊處理。 或者,如果您使用toolset=clang ,則需要構建為:

b2 cflags=-mmacosx-version-min=10.11 cxxflags=-mmacosx-version-min=10.11 mflags=-mmacosx-version-min=10.11 mmflags=-mmacosx-version-min=10.11 linkflags=-mmacosx-version-min=10.11 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM