首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是scons不支持LDFLAGS吗?

是scons不支持LDFLAGS吗?
EN

Stack Overflow用户
提问于 2020-10-15 00:13:10
回答 1查看 208关注 0票数 0

我是个新手。我正在尝试建立一个程序与gRPC的scons。我使用grpc_lib = commands.getoutput('pkg-config --libs protobuf grpc++')来获取LDFLAGS。grpc_lib是一个字符串

-L/home/zty/.local/lib -lprotobuf -lpthread -lgrpc++ -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations -lgrpc -laddress_sorting -lre2 -lupb -lcares -lz -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_hash -labsl_bad_variant_access -labsl_city -labsl_status -labsl_cord -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations -lgpr -labsl_str_format_internal -labsl_synchronization -labsl_graphcycles_internal -labsl_symbolize -labsl_demangle_internal -labsl_stacktrace -labsl_debugging_internal -labsl_malloc_internal -labsl_time -labsl_time_zone -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_throw_delegate -labsl_int128 -labsl_base -labsl_spinlock_wait -labsl_raw_logging_internal -labsl_log_severity -labsl_dynamic_annotations -lssl -lcrypto

所以我的SConstruct在下面,但它没有链接到LDFLAGS。

代码语言:javascript
复制
import os
import commands
from SCons.Script import *
grpc_lib = commands.getoutput('pkg-config --libs protobuf grpc++')
grpc_cflags = commands.getoutput('pkg-config --cflags protobuf grpc')

mainEnv = Environment(ENV = os.environ)

mainEnv['CXX'] = 'g++'
mainEnv.Append(CXXFLAGS = '-std=c++11')
mainEnv.Append(CPPPATH = '../protos')
mainEnv.Append(CPPFLAGS = grpc_cflags)
mainEnv.Append(LDFLAGS = grpc_lib)

sources = Split("""
                ../protos/CSmalloc.grpc.pb.cc
                ../protos/CSmalloc.pb.cc
                server.cc
                """)
mainEnv.Program('server',sources)

输出

代码语言:javascript
复制
g++ -o /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.grpc.pb.o -c -std=c++11 -lpthread -I/home/zty/.local/include -I/home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.grpc.pb.cc
g++ -o /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.pb.o -c -std=c++11 -lpthread -I/home/zty/.local/include -I/home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.pb.cc
g++ -o server.o -c -std=c++11 -lpthread -I/home/zty/.local/include -I/home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos server.cc
g++ -o server /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.grpc.pb.o /home/zty/lsnvmm-pmalloc/examples/grpc-CS/protos/CSmalloc.pb.o server.o

顺便问一下,有没有更简单的用gRPC构建C++程序的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 08:28:26

如果使用mainEnv.ParseConfig会更容易,它可以将运行pkg-config的结果直接拆分到正确的构造变量中。

至于gRPC...至少在互联网上有一些关于在scons中流畅地使用协议缓冲区的实验工作。这就是其中之一,不确定它是否是“最好的”版本:https://github.com/SCons/scons/wiki/ProtocBuilder。你可能需要更多..。你可以加入scons Discord频道进一步聊天。编辑:我没有意识到页面指向的存储库在Bitbucket删除非git存储库时被关闭的集合中,但它是存档的,而不是丢失的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64357434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档