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.11
,CMake 3.7
,Visual Studio 2015
。
答案 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)