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)