【问题标题】:Is it scons don't support LDFLAGS?scons 不支持 LDFLAGS 吗?
【发布时间】:2020-10-14 16:13:10
【问题描述】:

我是 scons 的新手。我正在尝试通过 scons 使用 gRPC 构建一个程序。 我使用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 链接。

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)

输出

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++ 程序?

【问题讨论】:

    标签: c++ grpc scons


    【解决方案1】:

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

    至于 gRPC……互联网上至少有一些关于将 protobufs 与 scons 一起使用的实验性工作。这是其中之一,不确定它是否是“最佳”版本:https://github.com/SCons/scons/wiki/ProtocBuilder。您可能需要更多……您可以加入 scons Discord 频道进一步聊天。已编辑:尚未意识到页面指向的存储库是在 Bitbucket 删除非 git 存储库时关闭的集合之一,但它已存档,而不是丢失。

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2016-03-05
      • 2014-01-03
      • 2021-08-29
      相关资源
      最近更新 更多