- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Cmake 模块中,我试图找到不同的路径。在某些情况下,我想在最初使用相同变量调用“find_path”后“设置”一个变量:
# general search for this include dir
find_path(LIBRARY_INCLUDE_DIR
NAMES LibraryName/LibraryHeader.h
)
# specific option enabled by user
if(USE_OTHER_LIB)
find_path(OTHER_LIB_ROOT_DIR
NAMES OtherLib/OtherLib.h
)
set(LIBRARY_INCLUDE_DIR ${OTHER_LIB_ROOT_DIR}/database/include)
endif(USE_OTHER_LIB)
这种方法在 Windows XP (CMake 2.8.1) 下运行良好。但是,它在 Mac OS 10.6 (CMake 2.8.3) 下不起作用。有人知道 mac/windows 版本之间是否存在差异以及如何解决这个问题吗?
非常感谢!
最佳答案
这是对“设置”和 CMake 缓存变量的常见误解。
行:
set(LIBRARY_INCLUDE_DIR ${OTHER_LIB_ROOT_DIR}/database/include)
为 LIBRARY_INCLUDE_DIR 设置一个本地覆盖值,该值对 CMakeLists 文件的其余处理有效,但对同名缓存变量没有影响。因此,它在 cmake-gui 或 ccmake 缓存编辑程序中不可见。
如果你想让它可见,你必须将它的值强制放入同名的缓存变量中,也许像这样:
set(LIBRARY_INCLUDE_DIR ${OTHER_LIB_ROOT_DIR}/database/include)
set(LIBRARY_INCLUDE_DIR ${LIBRARY_INCLUDE_DIR} CACHE FILEPATH "" FORCE)
然而,这通常是不受欢迎的,因为当最终用户调整 cmake-gui 程序中的值时,您的代码将用 FORCE-d 值覆盖用户的选择。所以...我建议只使用您一直在使用的行:抵抗力量。
要查看它是否真的生效,只需在 CMakeLists.txt 的末尾添加以下代码:
message(STATUS "LIBRARY_INCLUDE_DIR='${LIBRARY_INCLUDE_DIR}'")
所以...如果您的代码是正确的,那么一定有其他原因导致您认为有问题。我很好奇那可能是什么……也许是你的下一个 Stack Overflow 问题。
关于windows - 调用 "set"后,Cmake "find_path"对同一变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5006286/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!