是否可以从cmake中执行影响cmake自身环境的进程?
例如,我有一个更新qazxsw poi的脚本,需要运行才能让qazxsw poi随后很好地找到我的包。如果我写的话:
PKG_CONFIG_PATH
这将失败
pkg-config
我需要先运行:
find_package(PkgConfig REQUIRED)
pkg_check_modules(FOO REQUIRED foo)
但是在cmake之外,这有效(-- Checking for module 'foo'
-- No package 'foo' found
随后发现find_package(PkgConfig REQUIRED)
execute_process(COMMAND my_path_updating_script)
pkg_check_modules(FOO REQUIRED foo)
),在cmake中,这运行过程并且pkg-config
继续失败。有没有办法实际更新本地cmake环境以反映该脚本中的更改?或者,否则,只需在新环境中运行foo
?
是的,您可以使用pkg-config
更改环境变量。但通常最好将正确的参数传递给工具调用。
对于你的pkg-config示例,这个问题的答案中描述了两种方式:pkg_check_modules()
简短摘录;沿用这个:
set($env{..} ..)