gpt4 book ai didi

c++ - 使用包含空格的命令时 ExternalProject_Add 的奇怪行为

转载 作者:太空狗 更新时间:2023-10-29 21:23:56 25 4
gpt4 key购买 nike

我需要使用 ExternalProject_Add 编译 boost 库,构建命令需要带有 Clang 的 MacOS 平台上的 c++11 标志。

命令应该是这样的:

./bin/b2 debug release cxxflags="-std=c++11 -stdlib=libc++" linkflags=-stdlib=libc++

但是我对引号和空格有疑问。

set(BOOST_CXX_FLAGS cxxflags="-std=c++11 -stdlib=libc++")
set(BOOST_TOOL_SET toolset=clang ${BOOST_CXX_FLAGS}
linkflags=-stdlib=libc++)
ExternalProject_Add(boost
....
BUILD_COMMAND ./bin/b2 debug release
${BOOST_TOOL_SET}
....
)

${BOOST_TOOL_SET} 值是一个列表,cxxflags="-std=c++11
-stdlib=libc++"
是里面的一项,生成的命令行就变得奇怪了:

./bin/b2 debug release "cxxflags=\"-std=c++11 -stdlib=libc++\""
linkflags=-stdlib=libc++

当 CMake 检测到参数中的空格并将其用引号括起来时,该标志似乎由 CMake 翻译,但这不是我想要的。

我在 Internet 上搜索过,但没有找到任何帮助。关于这个问题有什么提示吗?

最佳答案

这应该有效:

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

这应该产生

./bin/b2 debug release "cxxflags=-std=c++11 -stdlib=libc++"

在正常的 shell 解析规则下,这等同于对你有用的:

./bin/b2 debug release cxxflags="-std=c++11 -stdlib=libc++"

关于c++ - 使用包含空格的命令时 ExternalProject_Add 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com