Cmake 科马克公司&引用;路径“;变量
在CMake中,如何定义一个路径类型缓存变量(在Windows中,Cmake 科马克公司&引用;路径“;变量,cmake,Cmake,在CMake中,如何定义一个路径类型缓存变量(在Windows中,CMake gui.exe)为我提供获取弹出对话框的小“…”按钮?现在,我使用的语法如下: SET(LIBRARY_INCLUDE_DIR "something" CACHE PATH "Location of libraries") 但它似乎把它当作一根弦 更新: 这里有一个明确的例子: IF(EIGEN_DIR) SET(EIGEN_INCLUDE_DIRS ${EIGEN_D
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)
而且,即使是在新的第一次运行CMake时,
EIGEN\u INCLUDE\u DIRS
也会作为字符串结束。您的命令是正确的
但是,要更改变量的类型,您需要关闭cmake-gui.exe,从CMakeCache.txt中删除变量(或删除整个文件),然后重新打开cmake-gui.exe
另一种可能性是在字符串类型之前设置相同的值(在这种情况下,保留第一种类型):
或者您以后取消设置相同的值,然后将其设置为不同的类型:
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")
当我尝试这一行,它的工作非常好。您是否尝试删除cmakcache.txt
并再次生成?是的,它位于CMakeLists.txt文件中,我在第一次配置时从头开始使用该文件,它将它们都视为字符串。我使用的是2.8.10。我刚刚在我的答案中添加了几个想法。你也可以尝试添加强制,它会在你更改某些内容时导致变量被覆盖,而不必手动删除缓存。出于某种原因,这不起作用。。具体来说:IF(EIGEN_DIR)SET(EIGEN_INCLUDE_DIRS${EIGEN_DIR}缓存路径“EIGEN INCLUDE文件的位置”)ELSE()SET(EIGEN_INCLUDE_DIRS“缓存路径”EIGEN INCLUDE文件的位置)ENDIF(EIGEN_DIR)和EIGEN_INCLUDE_DIRS仍然只是一个字符串,而不是一个路径。(很抱歉格式化,我无法理解SO的注释格式化fubarness)在您的ELSE
部分中,您有缓存路径
,而不是缓存路径
。这可能是原因。
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")