[英]Build 32 and 64 bit libraries for boost at sametime?
选项“--address-model = 32,64”是否可以构建32和64个库,还是必须进行两个单独的构建?
这样做:
b2 address-model=32,64
要么..
b2 address-model=32,64,32_64
在第一种情况下,根据工具集和平台支持,工作和生成32位和64位目标。 32,64和32 + 64通用目标(最有可能只在OSX上使用darwin
工具集。而且“工作”我的意思是我只是在OSX上使用darwin
工具集在我的Boost库中尝试过它。因此我怀疑你有你的语法错误,即不要使用“--name = values”,因为它们不是选项,而是使用“name = values”是需求规范。
文件说明(强调我的):
“显式请求32位或 64位的代码的生成。”
请注意,它没有说“一个或多个”或“至少一个”,它表示......或者,这意味着我在阅读它时的XOR并且您的经验与之匹配。
允许值列表中的逗号仅用于分隔允许值集中的两个项。
我最后做了以下事情:
两者都优选地在增强已经检查的搜索路径中,例如阶段或安装文件夹。
然后我在标题下汇编搜索路径后立即添加了这个块(要编辑的FindBoost.cmake文件位于CMake安装文件夹中的share / cmake-3.1 / Modules /文件夹下)
开始寻找升级库
...
如果(Boost_LIBRARY_DIR)
...
万一()
#generate 32 and 64 bit paths
if(WIN32)
if(CMAKE_CL_64)
#message("Finding BOOST on windows platform (64 bit)")
SET(BOOST_libdir_suffix_gen "64")
else()
#message("Finding BOOST on windows platform (32 bit)")
SET(BOOST_libdir_suffix_gen "32")
endif()
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS "")
foreach(SEARCH_DIR_NOPLATFORM ${_boost_LIBRARY_SEARCH_DIRS})
list(APPEND _boost_LIBRARY_SEARCH_DIRS_PLATFORMS ${SEARCH_DIR_NOPLATFORM}${BOOST_libdir_suffix_gen})
endforeach()
foreach(SEARCH_DIR_PLATFORM ${_boost_LIBRARY_SEARCH_DIRS_PLATFORMS})
list (APPEND _boost_LIBRARY_SEARCH_DIRS ${SEARCH_DIR_PLATFORM})
endforeach()
else()
# no generation required (?)
endif()
它会将所有现有的lib目录重新附加到库的boost搜索路径,后缀为64或32位扩展标记。 这将选择正确的目标库进行链接,您可以安全地为32或64目标构建重新生成任何其他依赖的cmake库(如CGAL),而无需重置boost依赖路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.