Понадобилось подключить сторонние библиотеки в С++
Для подключения понадобилось написать CMakeList
project(AXI)
cmake_minimum_required(VERSION 3.3) SET(CMAKE_CXX_FLAGS "-std=c++11") add_definitions(-DLINUX -D_GNUC_) if(WIN32)
set(PATH_TO_MPLC_LIBRARY
"/mnt/usb/files/c++/linux") # ПОМЕНЯТЬ НА СВОЙ
set(PATH_TO_MPLC_INCLUDES
/mnt/usb/files/c++) # ПОМЕНЯТЬ НА СВОЙ else()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(PATH_TO_MPLC_LIBRARY
"~/Documents/work/Axitech/Project/cmake") # ПОМЕНЯТЬ НА СВОЙ
set(PATH_TO_MPLC_INCLUDES
"~/Documents/work/Axitech/Project/cmake") # ПОМЕНЯТЬ НА СВОЙ
#link_directories(${PATH_TO_MPLC_LIBRARY}) endif()
include_directories(
${PATH_TO_MPLC_INCLUDES}/include/core
${PATH_TO_MPLC_INCLUDES}/include
${PATH_TO_MPLC_INCLUDES}/lib
${PATH_TO_MPLC_INCLUDES}/lib/opcua)
#set(MPLCLIBS masterplc opcua mplcshare) # mplcshare)
#set(SYSLIBS pthread rt dl)
#foreach (MPLCLIB ${MPLCLIBS})
# add_library(${MPLCLIB} SHARED IMPORTED)
# set_property(TARGET ${MPLCLIB} PROPERTY
# IMPORTED_LOCATION ${MPLCLIB}.so)
#endforeach ()
set(INCLUDES gpio_protocol.h types.h)
set(SOURCES
gpio_protocol.cpp
mplc_gpio.cpp) add_library(mplc_gpio SHARED ${SOURCES} ${INCLUDES})
#target_link_libraries(mplc_gpio ${MPLCLIBS} ${SYSLIBS})
#target_link_libraries(mplc_gpio ${MPLCLIBS} ${SYSLIBS})
SET_TARGET_PROPERTIES(mplc_gpio PROPERTIES PREFIX "")
Все лежит на своих местах
Запускаю cmake
, все идет гладко, но при запуске make
:
In file included from
/home/geo/Documents/work/Axitech/Project/cmake/gpio_protocol.h:3:0,
from /home/geo/Documents/work/Axitech/Project/cmake/gpio_protocol.cpp:1:
/home/geo/Documents/work/Axitech/Project/cmake/types.h:2:30: fatal
error: shared/driver_fb.h: No such file or directory
Файл type.h
#pragma once
#include <shared/driver_fb.h>
#include <string>
using namespace std;
namespace axi {
struct ChannelInfo : DriverVarDsc {
typedef boost::shared_ptr<ChannelInfo> ptr;
static ptr make() { return boost::make_shared<ChannelInfo>(); }
std::string AddressGPIO;
};
typedef std::list<ChannelInfo::ptr> ChannelList;
}
Не используйте тильду в путях, используйте полный путь:
set(PATH_TO_MPLC_INCLUDES "/home/geo/Documents/work/Axitech/Project/cmake")
или так:
set(PATH_TO_MPLC_INCLUDES "$ENV{HOME}/Documents/work/Axitech/Project/cmake")
А вообще Ваш CMake файл ужасен, конечно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Долго я пытался решить проблему самостоятельно, а так же и искал ответы на форумахНо в итоге не смог решить свою проблему
Как исправить ошибку? У меня есть функция
Подскажите что делаю не такНаписал простую функцию которую хочу вызвать в qml