Сторонние библиотеки

206
28 июля 2018, 08:30

Понадобилось подключить сторонние библиотеки в С++

Для подключения понадобилось написать 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;
} 
Answer 1

Не используйте тильду в путях, используйте полный путь:

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 файл ужасен, конечно.

READ ALSO
Ошибка при чтении объекта класса из файла - C++

Ошибка при чтении объекта класса из файла - C++

Долго я пытался решить проблему самостоятельно, а так же и искал ответы на форумахНо в итоге не смог решить свою проблему

210
Нужно возвращать std::unique_ptr&lt;QJsonObject&gt; а я возвращаю QJsonObject, что делать?

Нужно возвращать std::unique_ptr<QJsonObject> а я возвращаю QJsonObject, что делать?

Как исправить ошибку? У меня есть функция

168
Вызов функций c++ из qml

Вызов функций c++ из qml

Подскажите что делаю не такНаписал простую функцию которую хочу вызвать в qml

212
Как запустить QTimer в QtConcurrent::run

Как запустить QTimer в QtConcurrent::run

Kак запустить запустить QTimer в QtConcurrent::run?

170