我想定义一些具有某些属性(例如,依赖关系和链接库)的目标,然后继续定义没有这些属性的其他目标。
add_executable(foo src/foo1.cpp)
add_dependencies(foo some_dependency)
target_link_libraries(foo mylib)
add_executable(bar src/bar2.cpp)
add_dependencies(bar some_dependency)
target_link_libraries(bar mylib)
add_executable(baz src/baz3.cpp)
add_dependencies(baz some_dependency)
target_link_libraries(baz mylib)
# and now without the dependencies...
add_executable(quux src/qux.cpp)
add_executable(quuz src/quuz.cpp)
是否存在用于推送和弹出相关属性的好习惯?
答案 0 :(得分:1)
我为此付出了很多努力。不幸的是,我不能说我找到了令人满意的解决方案,部分原因是CMake语言是原始语言,因此具有很大的局限性。
可以应用于特定代码示例的一个想法是,在定义目标之后的某个时候创建相关目标的列表,并使用适用于所有这些目标的命令运行var passport = require('passport')
app.use(passport.initialize());
var BearerStrategy = require('passport-azure-ad').BearerStrategy
var bearerStrategy = new BearerStrategy (...)
passport.use(bearerStrategy);
循环一致(即在这种情况下为foreach
和add_dependencies
)。除此之外,您还可以使用set_target_properties
一次性设置多个属性值对。
target_link_libraries
我想这也是个人喜好问题,并且使用基于循环的方法时,“特殊”目标的列表是否足够长以保存LOC。
如果对此问题有明显更好的方法,我也很感兴趣。