c++, Mac OS X, Xcode 8: Compile 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"answers"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最小版本有特殊处理。或者,如果您使用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 ...
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++A*算法并不总是在路径中具有目标节点
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 为测试目标创建具有不同源文件夹的文件
- 使用源向量作为目标
- "ostream &os"有什么用?
- 是否可以用C++/WinRT将windows 10.0.14393作为目标
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 在 CMake 中为每个目标设置编译器/链接器标志
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 CMake 中对目标依赖项进行分组?
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- C++读取用户输入而不按回车键(Mac OS X),与Turbo Pascal中的读取键相同
- 如何在 MAC OS c/c++ 中阻止 USB 存储设备
- 如何为包含头文件的目标编写生成文件?
- 线性优化目标函数中的绝对值
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- c++, Mac OS X, Xcode 8: Compile Boost:设置部署目标为OS X 10.11
- 适合Mac OS X目标的交叉编译器