Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于配置的CMake转义变量_Linux_Cmake - Fatal编程技术网

Linux 用于配置的CMake转义变量

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

目前,我正在使用以下语法设置RPATH:

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}
                  )