Linux 用于配置的CMake转义变量
目前,我正在使用以下语法设置RPATH:Linux 用于配置的CMake转义变量,linux,cmake,Linux,Cmake,目前,我正在使用以下语法设置RPATH: SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib") 它正在使用CMake进行二进制构建。 问题是它不适用于我正在使用CMake使用其自动配置脚本构建的第三方二进制文件。我正在使用以下命令进行配置: add_custom_target( third_party_bin ALL COMMAND ./con
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib")
它正在使用CMake进行二进制构建。
问题是它不适用于我正在使用CMake使用其自动配置脚本构建的第三方二进制文件。我正在使用以下命令进行配置:
add_custom_target(
third_party_bin ALL
COMMAND ./configure
--with-ld-opt=\"-Wl,-rpath,${CMAKE_INSTALL_RPATH}\"
--prefix=${CMAKE_INSTALL_PREFIX}
)
第三路径配置生成的Makefile如下所示:
" -Wl,-rpath,':RIGIN/../lib' -lstdc++"
我想我需要正确地转义${CMAKE\u INSTALL\u RPATH}
。
我还尝试使用以下选项:
add_custom_target(
third_party_bin ALL
COMMAND ./configure
--with-ld-opt=\"-Wl,-rpath,\$\$ORIGIN/../lib\"
--prefix=${CMAKE_INSTALL_PREFIX}
)
及
但什么都不管用
什么是转义值的正确方法?如果我读对了,那么您希望从解释$variables中转义shell。。。如果是这样,请使用单引号(')而不是双引号(“)。shell不会解释用单引号括起来的变量。
add\u custom\u target
接受一个逐字
参数。根据文档:
如果给出了逐字,则命令的所有参数都将
为构建工具正确转义,以便调用的命令
接收未更改的每个参数。请注意,一级转义为
在添加自定义目标之前仍由CMake语言处理器使用
甚至可以看到参数。建议使用逐字记录,因为它可以
正确的行为。如果未提供逐字记录
,则该行为为平台
特定,因为没有特定工具的特殊保护
人物
add_custom_target(
third_party_bin ALL
COMMAND ./configure
--with-ld-opt=\"-Wl,-rpath,\\$\$ORIGIN/../lib\"
--prefix=${CMAKE_INSTALL_PREFIX}
)