Cmake, связывающий экономию - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь связать экономию в CMake, чтобы я мог скомпилировать мое тестовое приложение.

cmake_minimum_required(VERSION 3.10)
project(TestApp)

set(CMAKE_CXX_STANDARD 11)

add_executable(TestApp main.cpp)
target_link_libraries(TestApp -lthrift --static -pthread )

Вот простое тестовое приложение, включающее экономные заголовки.

#include <iostream>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/transport/TSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/transport/TTransportUtils.h>
#include <thrift/stdcxx.h>

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

int main() {

    std::cout << "BlaBlaBla" << std::endl;
    return 0;
}

Когда я пытаюсь скомпилировать фрагмент, показанный выше, мне выдается ошибка компоновщика:

/opt/JetBrains/apps/CLion/ch-0/181.5087.36/bin/cmake/bin/cmake --build /home/user/Documents/Projects/TestApp/cmake-build-debug --target TestApp -- -j 2
[ 50%] Linking CXX executable TestApp
/usr/bin/ld: cannot find -lthrift
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/TestApp.dir/build.make:95: TestApp] Error 1
make[2]: *** [CMakeFiles/Makefile2:68: CMakeFiles/TestApp.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/TestApp.dir/rule] Error 2
make: *** [Makefile:118: TestApp] Error 2

Однако, Thrift-библиотеки определенно установлены. Как я могу связать, чтобы исправить эту проблему и связать их правильно в файле CMake?

1 Ответ

0 голосов
/ 26 июня 2018

Проблема была решена путем клонирования хранилища комиссионных от github https://github.com/apache/thrift

Тогда я просто следовал инструкции по сборке. Я запустил ./bootstrap.sh и ./configure, затем make и затем sudo make install. Теперь компоновщик распознает флаг -lthrift.

...