CLion Създава екземпляр на неизвестна структура без препратка, но се компилира добре

Опитвам се да настроя проекта си cmake с HDF5 на Windows 10 (64 бита), използвайки редактора CLion и MinGW. След много време, опитвайки се да настроя правилно моя файл CMakeLists, получих нещо работещо - кодът се компилира, няма грешки от mingw32-make или от cmake. Въпреки това, все още получавам червени подчертани грешки в CLion, които не изглежда да оказват никакво влияние върху компилацията, но имам чувството, че са там, защото съм направил нещо неправилно. (Съвсем нов съм в правенето на нещо повече от класни проекти с C++)

Ето моят CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

project(testProject)
add_definitions(-std=c++11)
set(SOURCE_FILES hdf_example.cpp)

link_libraries("C:/Program Files/HDF_Group/HDF5/1.8.16/lib/hdf5_hl_cpp-shared.lib"
               "C:/Program Files/HDF_Group/HDF5/1.8.16/lib/hdf5_cpp-shared.lib"
               "C:/Program Files/HDF_Group/HDF5/1.8.16/lib/hdf5-shared.lib")

add_executable (abc hdf_example.cpp)

въведете описание на изображението тук

Компилирането на това от командния ред с помощта на mingw32-make или в IDE води до успешна компилация без грешки или предупреждения, които виждам.

C:\Users\Me\Documents\project_name\temp-build\src\abc>mingw32-make
[ 50%] Building CXX object src/s3/CMakeFiles/abc.dir/hdf_example.cpp.obj
[100%] Linking CXX executable abc.exe
[100%] Built target abc

Това ли трябва да ме тревожи? Или трябва просто да го игнорирам, тъй като всичко се компилира?


person TomW    schedule 26.01.2016    source източник
comment
Какво ще кажете за повтаряне на компилацията в терминала/cmd? Направете build директория някъде, въведете cmake path_to_source и след това make   -  person Severin Pappadeux    schedule 30.01.2016
comment
Направих това - няма предупреждения или грешки. Както с ръчно използване на cmake, така и с натискане на бутона за изпълнение в CLion мога да компилирам и стартирам без проблем, само изгледът на редактора в CLion смята, че има проблем   -  person TomW    schedule 31.01.2016


Отговори (3)


Имах този проблем и го реших, като поставих #include <getopt.h> над #include <unistd.h> в C файла. Това може да се разглежда като грешка в CLion. Създадох проблем за това. Заобиколното решение за сега е да пренаредите вашите импортирания.

За подробности можете да прочетете и въпроса ми за това.

Създаване на неизвестна структура без препратка

въведете описание на изображението тук

person Niklas R.    schedule 23.04.2016

Вашата IDE и инструменти за изграждане са два "напълно" различни процеса. Няма за какво да се притеснявате, ако вашият код се компилира с Cmake и MingW. Вероятно сте конфигурирали вашата IDE с различни настройки от дадените във вашите CMakeLists. Трябва да свържете библиотеката hdf5 C++ във вашия редактор, за да разрешите „проблемите“ във вашата IDE. Това само ще подобри четливостта.

person Thomqa    schedule 28.01.2016
comment
IDE използва mingw и файла CMakeLists за компилиране на кода и е конфигуриран да използва същите mingw и cmake като при командния ред. - person TomW; 28.01.2016
comment
Изграждането и проверката на синтаксиса в IDE са 2 отделни неща. Самият MinGW не ви дава хубав списък с места за подчертаване, той просто съобщава за някои грешки при компилиране (първите, които среща). От друга страна, IDE трябва да отмени възможно най-много грешки, така че използва свой собствен (ръчно изработен) парсер и нещо като компилатор, за да извърши само проверката на синтаксиса. Ето защо, дори и с MinGW, конфигуриран в IDE, той все още показва грешки, които MinGW приема. - person Martin Pecka; 22.02.2016
comment
също така трябва да потърсите clion tracker за тази грешка и да направите доклад за грешка, ако не намерите подобни проблеми - person strangeqargo; 26.04.2016

Аз също срещнах тази грешка и се оказа, че в моя случай всъщност съм забравил да включа заглавка. При използване на Emacs се показва правилната информация за грешка (Implicit instantiation of undefined template 'std::basic_ifstream<char,std::char_traits<char>>') (Вижте Защо получавам това ifstream грешка?). Не съм сигурен защо CLion докладва грешката неправилно.

person xji    schedule 08.04.2018