msvc无法使用CMake automoc生成moc文件

时间:2018-11-23 12:59:22

标签: visual-studio qt visual-c++ cmake

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)

set(source_files
    a.cpp
    b.cpp
    ...
   )

set(header_files
    a.hpp
    b.hpp
    ...
   )

set(Qt_libs
    Qt5::Core
    Qt5::Gui
    Qt5::Widget
    ...
   )

add_library(demo SHARED ${header_files} ${source_files})
target_link_libraries(demo ${Qt_libs} ...)
set_properties(TARGET demo PROPERTY FOLDER "somewhere")
install(...)

我上面有一个示例CMakeLists.txt

最奇怪的是,直到我手动修改(如向文件中添加空行)那些头文件(其中有Q_OBJECT的地方),它才会生成这些moc文件。

这种情况并非每次都会发生。但是,一旦发生,清理构建或删除整个项目文件将无济于事。

我正在使用qt 5.11CMake 3.7Visual Studio 2015

1 个答案:

答案 0 :(得分:0)

您正在使用set()设置全局设置,该设置可能会被覆盖。 请使用例如set_target_properties

project(exampleProj)
add_executable(exampleProj main.cpp)
set_target_properties(exampleProj
   PROPERTIES
     CMAKE_INCLUDE_CURRENT_DIR ON
     CMAKE_AUTOMOC ON)