CMake-传递环境变量而不展开

CMake-传递环境变量而不展开,cmake,Cmake,在CMake中,我正在做这样的事情: LINK_DIRECTORIES( $ENV{VARNAME}/lib ) 但是,这将扩展环境变量,以便生成的visual studio项目将具有硬编码路径,例如: C:/PathToWhereVarNamePointed/lib 是否有一种方法可以进行上述调用,从而使VisualStudio以下面的方式结束 $(VARNAME)/lib 因为(相对与绝对),除了避开美元和帕伦,您还需要设置旧的策略: CMAKE_POLICY( SET CMP0015

在CMake中,我正在做这样的事情:

LINK_DIRECTORIES( $ENV{VARNAME}/lib )
但是,这将扩展环境变量,以便生成的visual studio项目将具有硬编码路径,例如:

C:/PathToWhereVarNamePointed/lib
是否有一种方法可以进行上述调用,从而使VisualStudio以下面的方式结束

$(VARNAME)/lib
因为(相对与绝对),除了避开美元和帕伦,您还需要设置旧的策略:

CMAKE_POLICY( SET CMP0015 OLD )
LINK_DIRECTORIES( 
    \$\(VARNAME\)/lib
)
CMAKE_POLICY( SET CMP0015 NEW )
然后它显示为:
CMake文档说,
LINK\u目录
是“”。您确定这是正确的方法吗?

您是否尝试过
%VARNAME%
?这就是环境变量在Windows中展开的方式。如果“环境变量”指的是系统变量,如下所示:
${}
语法用于扩展CMake local/cache变量您可以使用
\${VARNAME}
将其扩展为变量。对不起,我的意思是$ENV{VARNAME},问题已经更新。我遇到的主要问题是,如果我转义环境变量,例如\$(VARNAME)/lib,那么它会将其视为一个相对路径,并将我的cmake目录前置到它@metal的答案将修复
链接目录
,但我不确定如何修复
包含目录
@pauld
目标链接目录
目标链接选项
可以接受链接器选项。直接设置
LINK\u目录
属性可能会绕过CMP0015处理。但调整链接器搜索路径似乎并不常见,因为提供要链接的库的整个路径似乎更常见。