我正在使用 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按照它们的样子被放入其中。 即使它起作用了,我想我会得到更多的包括,因为我认为目标也包括库。也许这不是一个好方法。
那么,在这里我该怎么办?我如何从每个目标中提取include目录以供自定义命令使用? 我发现如果我使用
find_package(Foo REQUIRED)
,我可以访问Foo_DIR
,但它指向构建目录而不是包含目录的源目录。
CMAKE_C_COMPILER
是gcc
,你是否打算将它们作为包含目录传递给编译器?使用-I
标志吗? - Kevin