简体   繁体   中英

CMake, QtCreator and header files

This is not exactly a compilation related problem, but much more a visual issue ...

I have a project, set up with CMake (this is not a Qt project). When I open this project with QtCreator it nicely finds all the related files, and the files in the project browser are in alphabetical order like:

Project
 + abc.cpp
 + abc.h
 + def.cpp
 + def.h

However, if I work with QtCreator and a QMake based project, the headers and sources are nicely separated like:

Project
 + Headers
 |  + abc.h
 |  + def.h
 + Sources 
    + abc.cpp
    + def.cpp

Question: How to achieve this separation of headers and sources with Qt Creator? I have tried with SOURCE_GROUP("Headers" FILES abc.h def.h) and although that this works (to some extent) with Visual Studio, it does not work with Qt Creator. Any other tips?

Specifically for CMake, do something like:

ADD_CUSTOM_COMMAND(OUTPUT
    ${CMAKE_BINARY_DIR}/include/res.h ${CMAKE_BINARY_DIR}/Sources/abc.cpp
    COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/Headers/abc.h
DEPENDS ${CMAKE_SOURCE_DIR}/resources/res.gen)

For further options and details:

Of course you can still use Qt Creator if you like for editing your files. In the Qt Creator at the main control panel, in the upper left menu you need to select:

File > New File or Project > Files and Classes > C++ :

Then you have three options:

  • C++ Class: This option generate both sub-folders for source file and header file, automatically including a header and a source file into the respective folders.
  • C++ Source File: This will create and add only the source file with the respective sub-folder to your project.
  • C++ Header File: This will create and add only header file with the respective sub-folder to your project.

Select the one you need and it will be under your project folder organized in the way you want it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM