我正在使用 建模依赖关系target_link_libraries
,就像在这篇博文中所做的那样。
target_link_libraries(Foo
LibraryA
LibraryB
)
这很好用,但由于各种原因,我需要add_custom_target
通过自定义命令对文件进行预处理。问题是,这个自定义目标依赖于 LibraryA 和 LibraryB 的包含。我真的希望像target_link_libraries
工作方式一样执行以下操作(请参阅 LibraryA 和 LibraryB 位):
add_custom_target(Bar ALL
COMMAND ${CMAKE_C_COMPILER} thing.cpp LibraryA LibraryB /P
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/Path/Here
COMMENT "Preprocessing to a file"
VERBATIM
)
但是,这不起作用。LibraryA 和LibraryB 按它们出现的样子放入。即使它确实有效,我想我会得到比包含更多的东西,因为我认为目标也包括库。也许这不是一个好方法。
那么,我可以在这里做什么?如何从每个目标中提取包含目录,以便在自定义命令中使用?我发现我find_package(Foo REQUIRED)
是否可以访问Foo_DIR
,但这指向构建目录而不是包含所在的源目录。