2015-04-06 2 views
0

Интересно, какие ограничения на использование CMake файлов (я думаю, особенно с использованием каталогов и/или библиотек, а также расположение исполняемых файлов)Kdevelop и CMake сотрудничество

(Когда я использую тривиальный Hello пример , KDevelop отлично работает, я даже могу отлаживать свой проект. Когда я пытаюсь подходить к нему в реальном целевом проекте, я редактирую файл CMakeList.txt для создания библиотеки в подкаталоге и перемещаю исполняемые файлы в отдельный подкаталог, KDevelop получает частично работает: он создает исполняемые файлы, исполняемые файлы работают в автономном режиме, но не под KDevelop, и, конечно, я не могу отлаживать.)

Я думаю, что какая-то проблема видимости происходит в g: т. е. хотя CMake считает, что моя схема в порядке (т. создает корректный Makefile и даже исполняемые файлы), как-то KDevelop теряется, и поскольку он не видит какой-то файл в ожидаемом месте, он перестает работать. Существует ли какое-либо правило, что НЕ использовать в CMake?

Для любого случая я прикрепляю файлы cmake (основной и один для библиотеки). Я что-то делаю неправильно?

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
set(CMAKE_LEGACY_CYGWIN_WIN32 0) 

project(kmanycore CXX C) 

include_directories(../lib) 

add_subdirectory(lib) 

add_executable(../bin/kmanycore ../src/main.cpp) 
add_executable(../bin/kmanycore_test ../src/main_test.cpp) 

target_link_libraries(../bin/kmanycore manycore) 
target_link_libraries(../bin/kmanycore_test manycore) 

и

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 
set(CMAKE_LEGACY_CYGWIN_WIN32 0) 

add_library(manycore src/ToDo.cc) 
+0

Я полагаю, что это неизбежные ограничения KDevelop в его «понимании» сценариев CMake. Большинство «IDE» действительно глупы в «поддерживающих» системах построения - они используют очень простые «шаблоны», которые подходят для приложений уровня «HelloWorld» (и заставляют вас следовать некоторым глупым и неявным правилам при написании сценариев сборки), но не для «Реального Мира» ... – zaufi

ответ

0

Ваш файл CMake выглядит странно, и я не IDE.

Первый аргумент add_executable - это имя исполняемого файла, нет пути. Он работает путем изменения с помощью простых Makefile. То же самое с target_link_libraries. И неясно, кто эти два проекта связаны друг с другом. Обычно IDE отслеживают один проект; переплетенные не поддерживаются.