我正在尝试在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文件中?
答案 0 :(得分:0)
通过从github https://github.com/apache/thrift克隆Thrift存储库解决了该问题
然后,我只是按照那里的构建说明进行操作。
我确实先运行./bootstrap.sh
和./configure
,然后运行make
,然后运行sudo make install
。
现在,链接器可以识别-lthrift
标志。