4

在 CMake 中,我如何定义一个 PATH 类型的缓存变量(在 Windows 中 cmake-gui.exe)给我一个小“...”按钮来获取弹出对话框?现在,我正在使用如下语法:

SET(LIBRARY_INCLUDE_DIR "something" CACHE PATH "Location of libraries")

但它似乎将它视为一个字符串。

更新:

这是一个明确的例子:

IF(EIGEN_DIR)
    SET(EIGEN_INCLUDE_DIRS ${EIGEN_DIR} CACHE PATH "Location of the Eigen include files")
ELSE()
    SET(EIGEN_INCLUDE_DIRS "" CACHE path "Location of the Eigen include files")
ENDIF(EIGEN_DIR)

EIGEN_INCLUDE_DIRS以字符串形式结束,即使是在首次运行 CMake 时也是如此。

4

1 回答 1

2

你的命令是正确的。

但是,似乎要更改变量的类型,您需要关闭 cmake-gui.exe,从 CMakeCache.txt 中删除变量(或删除整个文件),然后重新打开 cmake-gui.exe

另一种可能性是您set之前输入的值相同STRING(在这种情况下,保留第一种类型):

SET(LIBRARY_INCLUDE_DIR "something" CACHE STRING "Location of libraries")
SET(LIBRARY_INCLUDE_DIR "something" CACHE PATH "Location of libraries")

否则您unset稍后将使用相同的值并将set其转换为不同的类型:

SET(LIBRARY_INCLUDE_DIR "something" CACHE PATH "Location of libraries")
UNSET(LIBRARY_INCLUDE_DIR CACHE)
SET(LIBRARY_INCLUDE_DIR "something" CACHE STRING "Location of libraries")
于 2013-05-11T14:07:26.927 回答