cmake wrapping命令,在add_custom_命令中包含不需要的引号

cmake wrapping命令,在add_custom_命令中包含不需要的引号,cmake,Cmake,使用cmake 2.8.12.1,我有以下几行: set(LCOV ~/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov) separate_arguments(LCOV_PARAMS UNIX_COMMAND "--capture --directory ./CMakeFiles/mylib.dir --output-file coverage.info") add_

使用cmake 2.8.12.1,我有以下几行:

set(LCOV ~/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov)
separate_arguments(LCOV_PARAMS UNIX_COMMAND "--capture --directory ./CMakeFiles/mylib.dir --output-file coverage.info")
add_custom_command(
    OUTPUT coverage.info
    COMMAND ${LCOV} ${LCOV_PARAMS}
    DEPENDS tests)
当我使用VERBOSE=1运行make时,我可以看到命令被双引号括起来,当然shell会说“没有这样的文件或目录”:

当我仅从命令中删除波浪形时,cmake决定不再需要对其进行双引号。CMakeLists.txt中的新行:

#set(LCOV ${JENKINS_TOOL_DIR}/check/root/usr/local/bin/lcov)
set(LCOV /tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov)
separate_arguments(LCOV_PARAMS UNIX_COMMAND "--capture --directory ./CMakeFiles/mylib.dir --output-file coverage.info")
add_custom_command(
    OUTPUT coverage.info
    COMMAND ${LCOV} ${LCOV_PARAMS}
    DEPENDS tests)
结果运行时VERBOSE=1:

[100%] Generating coverage.info
/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov --capture --directory ./CMakeFiles/mylib.dir --output-file coverage.info
make[3]: /tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov: Command not found
我不明白为什么cmake决定为我添加报价。我试过冗长。我尝试将命令字符串放入add_custom_命令中(避免set()调用)。只要有tilde,cmake就会更聪明,并用不需要的双引号包围我的整个命令


如何在不引用字符串的情况下执行包含波浪线的命令?

现在我已经发布了问题,我找到了解决方案

$ENV{HOME}

所以我的命令变成:

set(LCOV $ENV{HOME}/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov)

这为我解决了问题。

现在我已经发布了问题,我找到了解决方案

$ENV{HOME}

所以我的命令变成:

set(LCOV $ENV{HOME}/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/check/root/usr/local/bin/lcov)
这为我解决了问题