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