cmake qt5_generate_repc() 将 rep 标头放在 CMAKE_CURRENT_BINARY_DIR

Posted

技术标签:

【中文标题】cmake qt5_generate_repc() 将 rep 标头放在 CMAKE_CURRENT_BINARY_DIR【英文标题】:cmake qt5_generate_repc() places rep header in CMAKE_CURRENT_BINARY_DIR 【发布时间】:2021-06-23 17:45:41 【问题描述】:

我正在尝试确定构建项目的正确方法。由于要求,我使用 cmake 而不是 qmake。在我的 Qt 项目中,我正在使用 Remote Objects

问题是qt5_generate_repc.rep 文件生成我的标头并将其放在CMAKE_CURRENT_BINARY_DIR 中并使其可用于包含我需要target_include_directories 我的构建目录,我不确定是否这是个好主意。

也许有更好的方法,或者我不了解一些基本原理?

【问题讨论】:

在包含路径中包含二进制目录是一种完全正常且被接受的做法。它使您可以从源中隔离构建工件(即 .rep 文件头)。 @AlexReinking 谢谢! 不客气!我只是把我的评论变成了一个正确的答案。 【参考方案1】:

问题是 qt5_generate_repc 从 .rep 文件生成我的标头将它放在 CMAKE_CURRENT_BINARY_DIR 并使其可用于包含我需要 target_include_directories 我的构建目录,我不确定这是否是个好主意.

这是一种完全正常且被接受的做法,对于构建时生成的源代码,确实是最好的做法。你应该这样做。

简单的原因是您永远不应该在树外构建中写入源目录,这是使用 CMake(树外)的幸运方式。

总体效果是防止可能发生的一类名称冲突和覆盖问题。

【讨论】:

以上是关于cmake qt5_generate_repc() 将 rep 标头放在 CMAKE_CURRENT_BINARY_DIR的主要内容,如果未能解决你的问题,请参考以下文章

cmake/modules/AddLLVM.cmake 处的 CMake 错误

cmake和makefile区别和cmake指定编译器(cmake -G)

cmake:从内部 .cmake 打印消息

cmake基础教程(13)cmake安装位置前缀CMAKE_INSTALL_PREFIX

make如何指定cmake路径

cmake --- cmake基础