【发布时间】:2021-06-07 19:10:51
【问题描述】:
有没有办法在 cmake 中为所有创建的目标创建定义。到目前为止,当我
add_compile_definitions(MYDEFINITION)
在我的根 CmakeLists.txt 中,它似乎只为在该文件中创建的目标创建那些定义。但我想为子目录中创建的所有目标创建定义。最好的方法是什么?
【问题讨论】:
-
it seems tosoo,嗯......不,它似乎没有。请创建一个minimal reproducible example。请注意,add_compile_definitions会影响 在其之后 定义的目标,add_compile_definitions之前add_subdirectory也是如此。 -
我认为这是问题所在。然而,在 add_subdirectory 之前这样做的问题是我错过了子目录中的一些条件,这些条件会改变这些定义。在 cmake 中有没有好的方法来处理这个问题?
-
子目录中的条件会影响它上面的内容吗?一个好方法是不要编写意大利面条代码 - 每个目录只影响下面的内容。重构代码。一个好方法是永远不要使用
add_compile_definitions,而只使用target_*的东西。