Пакость: Qt Creator умеет импортировать CMake проекты, проблема в том, что в дереве далеко не все файлы отображаются.
Причина: делается этот импорт через откровенную задницу: вызывает cmake с генератором “-G’CodeBlocks - Unix Makefiles’”, генерируя тем самым XML-файл проекта формата CodeBlocks. Но тут накладывается вторая задница: сам генератор обрабатывает файлы только для таргетов: executable, static_library, shared_library, module_library, всё остальное он забывает запихнуть в результирующий ‘.cbp’.
Решение
Для начала накладываем патч на CMake и пересобираем его:
--- cmExtraCodeBlocksGenerator.cxx.orig 2011-03-15 14:28:30.692010962 +1000
@@ -410,12 +410,14 @@
for (cmTargets::iterator ti = targets.begin();
ti != targets.end(); ti++)
{
+ //std::cout << "Type: " << ti->second.GetType() << std::endl;
switch(ti->second.GetType())
{
case cmTarget::EXECUTABLE:
case cmTarget::STATIC_LIBRARY:
case cmTarget::SHARED_LIBRARY:
case cmTarget::MODULE_LIBRARY:
+ case cmTarget::UTILITY:
{
const std::vector<cmSourceFile*>&sources=ti->second.GetSourceFiles();
for (std::vector<cmSourceFile*>::const_iterator si=sources.begin();
Потом, для тех файлов, которые хотим видеть в дереве создаём фейковый таргет, примерно так:
set(script-files
process-filelist.sh
)
# hack for display in Qt Creator (with patch for CMake)
add_custom_target(scripts true SOURCES ${script-files})
Всё, после регенерации файлы появятся в списке.
Решение костыльное, но время переписывать импортёр CMake в Qt Creator просто нет, будем надеяться, что разработчики обратят на это внимание.