CMAKE:仅在不重复时设置

时间:2014-01-29 19:59:22

标签: cmake

我在cmake中使用CACHE STRING FORCE使用cmake_minimum_required(VERSION 2.8.10) set(DUDEE "dudee") set(LIB ${DUDEE} CACHE STRING "Description" FORCE) set(LIB ${LIB} ${DUDEE} CACHE STRING "Description" FORCE) message(${LIB}) 技巧..

我希望这个简单的测试用例最终只能使用“dudee”而不是“dudeedudee:

PARENT

小解释:好的,我知道使用全局变量并不好,但cmake有点地狱,但是我无法追踪范围,所以${LIB}无法工作,我有一个很好的工作示例我设置了不同的cmake模块和我用全局变量编写的应用程序之间的依赖关系,它可以工作。

但是..有时会发生一些模块互相调用,每个模块都在添加依赖项。一个简单的例子:

应用程序XXX使用模块VideoReader,BlobDetector,VideoViewer,BlobTracker。所有这些模块都以这种方式导入OpenCV libs依赖:

set(LIB $ {LIB} $ {OpenCV_LIBS} CACHE STRING“Description”FORCE“

最后我在{{1}}变量中重复了很多时间的opencv库

1 个答案:

答案 0 :(得分:0)

target_link_libraries中使用的库列表的上下文中,重复通常不会导致任何实际问题。

但是,要删除重复项,您应该可以使用list(REMOVE_DUPLICATES LIB)