gpt4 book ai didi

自定义目标类型的 CMake include_directories

转载 作者:行者123 更新时间:2023-12-03 21:26:45 24 4
gpt4 key购买 nike

我有一个带有 .cpp 和 .h 源文件的自定义目标。通常,这些文件包含其他头文件。我想为要查看的头文件添加一个目录。

到目前为止,这听起来很容易,但这里有一个转折点。我正在使用自定义目标和自定义命令来编译和链接程序。实际编译器需要另一种类型的项目文件,与 CMake 不兼容。

如果我尝试将包含目录添加到当前目标,则会收到以下错误:

target_include_directories called with non-compliant target type.

我认为这可能是可能的原因是您可以在我从 CMake 创建的 Visual Studio 项目中添加头文件查找路径。我不想这样做,因为它不是持久的,我团队中的每个人也必须这样做。更糟糕的是,我必须向他们解释……(不寒而栗)

编辑:

为了回答评论,我正在生成 Visual Studio 2017 项目文件。
我的自定义目标命令只是:
add_custom_target(APP
DEPENDS ${APP_DEPENDENCIES}
SOURCES ${APP_DEPENDENCIES}
)

我的自定义命令是:
add_custom_command(
OUTPUT "${LIB_COMPILE_DIR}/libAPP.a"
DEPENDS ${LIB_COMPILE_SRCS}
COMMAND gbuild -top ${LIB_COMPILE_DIR}/App.gpj
WORKING_DIRECTORY ${LIB_COMPILE_DIR}
)

我知道 CMake 有一个 GHS MULTI 生成器,但它是非常实验性的,在我的情况下不起作用。

最佳答案

我遇到了类似的问题,因为我需要将包含目录提供给自定义目标。我的解决方案并不出色,但似乎解决了手头的问题。我获得了包含目录中的路径,并将它们格式化为我的编译器所需的输入(在本例中为 ODB[1])。

    get_directory_property(dirs INCLUDE_DIRECTORIES)
set(global_includes "")
foreach(dir IN LISTS dirs)
set(global_includes ${global_includes} -I ${dir})
endforeach()

然后我用了 ${global_includes}在自定义目标的命令中。我想搬到 target_include_directories的新世界,但没有设法让它在这种情况下工作。

[1] https://www.codesynthesis.com/products/odb/download.xhtml

关于自定义目标类型的 CMake include_directories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com