2015-10-07 6 views
3

Я создал пакет розовой кошки и успешно импортировал его в QtCreator. Несмотря на отсутствие проблем с компиляцией, включенные каталоги, упомянутые в файле CMakeLists моего пакета, не индексируются.QtCreator не индексирование включает файлы скелетного пакета

В чем может быть проблема? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

ответ

0

Создайте библиотеку из ваших файлов классов и соедините библиотеку с основным исполняемым файлом. Затем автозаполнение работает в QtCreator.

Вот как может выглядеть CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.3) 
project(example_project) 

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

find_package(catkin REQUIRED COMPONENTS 
    roscpp 
) 

catkin_package() 

include_directories(
    include 
    ${catkin_INCLUDE_DIRS} 
    ${PROJECT_SOURCE_DIR} 
) 

# Create a library with all your classes 
add_library(myFilesLib 
    src/class1.cpp 
    src/class2.cpp 
    src/class3.cpp 
) 
target_link_libraries(myFilesLib 
    ${catkin_LIBRARIES} 
) 

# add your executable 
add_executable(${PROJECT_NAME} 
    src/main.cpp 
) 

# link the library with your classes to the executable 
target_link_libraries(${PROJECT_NAME} 
    ${catkin_LIBRARIES} 
    myFilesLib 
) 

У меня был такой же/аналогичные проблемы. См. Более подробное объяснение решения here.

1

Это немного раздражает QtCreator. Для файлов заголовков в каталоге include, которые должны быть найдены, они должны быть указаны в add_executable/add_library явно.

Я обычно использую следующий простой (хотя, возможно, грязный бит) решение:

file(GLOB_RECURSE HEADERS include/*.hpp include/*.h) 

add_executable(compute_rigid_object 
    ${HEADERS} # for qtcreator... 
    src/the_source_files.cpp 
    ... 
)