在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运行.
最佳答案 你的命令是正确的.
但是,看来要更改变量的类型,需要关闭cmake-gui.exe,从CMakeCache.txt中删除变量(或删除整个文件),然后重新打开cmake-gui.exe
另一种可能性是您先将相同的值设置为STRING类型(在这种情况下保留第一个类型):
SET(LIBRARY_INCLUDE_DIR "something" CACHE STRING "Location of libraries")
SET(LIBRARY_INCLUDE_DIR "something" CACHE PATH "Location of libraries")
或者您稍后取消设置相同的值并将其设置为其他类型:
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")