Qt5和CMake:为AUTOMOC添加标题
使用CMake的Qt在链接过程中经常会导致问题 在阅读了几篇文章并进行了尝试之后,我发现AUTOMOC接受了用Qt5和CMake:为AUTOMOC添加标题,qt,cmake,automocking,Qt,Cmake,Automocking,使用CMake的Qt在链接过程中经常会导致问题 在阅读了几篇文章并进行了尝试之后,我发现AUTOMOC接受了用add\u executable提供的源文件,但忽略了用include\u directories(inc)提供的include文件夹中的头文件。将头文件添加到add_executable后,构建成功 但是告诉AUTOMOC头文件的正确方法是什么 在我的cmakecmakelists.txt中,我使用 如果您将头放在src目录中,而不是作为add\u executable中的源文件,这是
add\u executable
提供的源文件,但忽略了用include\u directories(inc)
提供的include文件夹中的头文件。将头文件添加到add_executable
后,构建成功
但是告诉AUTOMOC头文件的正确方法是什么
在我的cmakecmakelists.txt中,我使用
如果您将头放在src目录中,而不是作为
add\u executable
中的源文件,这是否有效?在较新的cmake版本中也可能会更改。Cmake 3+在文档中指出,对于QOBJECT
Makro,将自动解析具有相同基名的头文件。您运行的是哪个cmake版本?我运行的是cmake 3.5,如果您在src目录中有头文件,它会工作吗?看起来像是一个bug,或者cmake确实没有解析include目录。@Hayt是的。我将.h移到*src/-文件夹,并删除了add\u executable
上的条目。然后它就起作用了。但这破坏了头和源分离背后的想法。
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include_directories( inc )
set(QT5_MODULES Widgets)
find_package(Qt5 REQUIRED COMPONENTS ${QT5_MODULES})
add_definitions( -DQT_NO_KEYWORDS
-DQT_CORE_LIB
-DQT_GUI_LIB
-DQT_WIDGETS_LIB
-DQT_NO_DEBUG
-DROSCONSOLE_BACKEND_LOG4CXX
-fPIC)
add_executable( MyGui
src/main.cpp
inc/gui.h src/gui.cpp )
ament_target_dependencies( MyGui )
qt5_use_modules(MyGui ${QT5_MODULES})