我在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库
答案 0 :(得分:0)
在target_link_libraries
中使用的库列表的上下文中,重复通常不会导致任何实际问题。
但是,要删除重复项,您应该可以使用list(REMOVE_DUPLICATES LIB)
。