我无法在CMAKE.org网站或其他任何地方找到LANGUAGE变量的可能值列表.有人请列举CMAKE认可的价值观吗?我特别需要指定Objective C++.
我现在正在尝试在这篇文章中运行一个cmake脚本.使用此脚本,CMake将打印目标的所有属性.但是,当它尝试检索目标的"LOCATION"属性时,会发现以下错误:
The LOCATION property may not be read from target "abc". Use the target
name directly with add_custom_command, or use the generator expression
$<TARGET_FILE>, as appropriate.
Run Code Online (Sandbox Code Playgroud)
然后我尝试打印属性LOCATION,它也不起作用.有任何想法吗?
我正在使用 对依赖项进行建模target_link_libraries,正如本博客文章中所做的那样。
target_link_libraries(Foo
LibraryA
LibraryB
)
Run Code Online (Sandbox Code Playgroud)
这很好用,但由于各种原因,我需要使用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
)
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用。LibraryA 和 LibraryB 按它们出现的方式放入。即使它确实有效,我想我会得到比包含更多的东西,因为我认为目标也包括库。也许这不是一个好方法。
那么,我可以在这里做什么?如何从每个目标中提取包含目录,以便在自定义命令中使用?我发现如果我find_package(Foo REQUIRED)可以访问Foo_DIR,但它指向构建目录而不是包含所在的源目录。