将生成器表达式与add_dependencies一起使用

时间:2019-07-10 20:24:48

标签: cmake

我有一个名为Foo.Compile的目标,它将建立我的主程序。

add_executable(Foo.Compile ...)

然后我有一个名为Foo.Process的实用程序目标,它取决于已经生成的可执行文件并执行一些操作。

add_custom_target(Foo.Process)
add_dependencies(Foo.Process Foo.Compile)

但是我只希望它在发行版中运行,因为它很慢。因此,我创建了一个名为Foo的新目标,这是用户实际构建的目标。在发行版中,这应取决于Foo.Process,但在其他配置中,则不应该。所以我想我可以做到:

add_custom_target(Foo)
add_dependencies(Foo $<$<CONFIG:Release>:Foo.Process>)

但这给我一个错误:

  The dependency target "$<$<CONFIG:Release>:Foo.Process>" of
  target "Foo" does not exist.

问题似乎是add_dependencies不支持生成器表达式,所以我认为我只会使用target_link_libraries,而我知道。但这给了我一个错误,您不能在实用程序项目中使用target_link_libraries

请注意,我不能使用if (CMAKE_BUILD_TYPE == Release),因为我需要支持像Visual Studio这样的多配置生成器,所以我认为我必须使用生成器表达式。

我该怎么办?

0 个答案:

没有答案