xmake icon indicating copy to clipboard operation
xmake copied to clipboard

丢失对 protobuf 包的依赖

Open ivanallen opened this issue 2 years ago • 5 comments

Xmake 版本

v2.7.9

操作系统版本和架构

Linux 10-16-43-32 5.14.0-70.13.1.el9_0.x86_64 #1 SMP PREEMPT Wed May 25 21:01:57 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

描述问题

image

缺少对 protobuf 的依赖,看起来是走了系统库。最后 link 的时候也没有 -lprotobuf 如果去掉对 grpc 包的依赖,就正常了。grpc 是我系统中的包。

set_project("test")
set_languages("c++20")

set_version("1.0.0", {build = "%Y%m%d"})

add_requires("protobuf-cpp", {system = false}) -- 指定 system = false 也没有用
add_requireconfs("protobuf-cpp", {override = true, version = "3.14.0"}) -- 没有用
add_requires("grpc") -- 这个应该是找到了系统库
--add_requireconfs("grpc.protobuf-cpp", {override = true, version = "3.14.0"}) -- 没有用

target("demo")
    set_kind("binary")
    add_files("src/main.cc")
    add_files("src/demo.proto")
    add_rules("protobuf.cpp")
    add_packages("protobuf-cpp")
    add_packages("grpc")

期待的结果

应该能正常依赖 protobuf

工程配置

test.tar.gz

附加信息和错误日志

checking for platform ... linux checking for architecture ... x86_64 checking for gcc ... /opt/rh/gcc-toolset-12/root/usr/bin/gcc checking for zig ... no checking for zig ... no checking for unzip ... /usr/bin/unzip checking for git ... /usr/bin/git checking for gzip ... /usr/bin/gzip checking for tar ... /usr/bin/tar checking for ping ... /usr/sbin/ping pinging for the host(gitee.com) ... 34 ms pinging for the host(gitlab.com) ... 217 ms pinging for the host(github.com) ... 107 ms /usr/bin/git rev-parse HEAD /usr/bin/git rev-parse HEAD checking for cmake ... no checking for cmake ... /usr/bin/cmake checking for xmake::protobuf-cpp ... no checking for m4 ... no checking for apt::m4 ... no checking for pacman::m4 ... no checking for m4 ... /usr/bin/m4 checking for autoconf ... no checking for apt::autoconf ... no checking for autoconf ... /usr/bin/autoconf checking for libtool ... no checking for apt::libtool ... no checking for pacman::libtool ... no checking for libtool ... /usr/bin/libtool checking for pkg-config ... no checking for pkg-config ... /usr/bin/pkg-config checking for xmake::c-ares ... no checking for pacman ... no checking for emerge ... no checking for brew ... no checking for pkg-config ... /usr/bin/pkg-config checking for c-ares ... no checking for re2 ... pkgconfig::re2 0.0.0 checking for local::re2 ... re2 0.0.0 checking for xmake::abseil ... no checking for abseil ... no checking for xmake::openssl ... no checking for openssl ... pkgconfig::openssl 3.0.1 checking for xmake-repo::openssl ... openssl 3.0.1 checking for xmake::zlib ... no checking for pacman::zlib ... no checking for dpkg ... no checking for apt::zlib1g-dev ... no checking for zlib ... ::zlib 1.2.11 checking for xmake::grpc ... no checking for apt::build-essential ... no checking for grpc ... pkgconfig::grpc 24.0.0 generating.proto.moduledeps src/demo.proto checking for protoc ... /usr/bin/protoc checking for gcc ... /opt/rh/gcc-toolset-12/root/usr/bin/gcc checking for the c++ compiler (cxx) ... gcc checking for /opt/rh/gcc-toolset-12/root/usr/bin/gcc ... ok checking for flags (-fPIC) ... ok checking for flags (-std=c++20) ... ok checking for flags (-pthread) ... ok [ 20%]: compiling.proto src/demo.proto /usr/bin/protoc src/demo.proto -Isrc --cpp_out=build/.gens/demo/linux/x86_64/release/rules/protobuf/src /opt/rh/gcc-toolset-12/root/usr/bin/gcc -c -m64 -std=c++20 -DNOMINMAX -pthread -std=c++11 -Ibuild/.gens/demo/linux/x86_64/release/rules/protobuf/src -o build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o build/.gens /demo/linux/x86_64/release/rules/protobuf/src/demo.pb.cc [ 40%]: cache compiling.release src/main.cc /opt/rh/gcc-toolset-12/root/usr/bin/gcc -c -m64 -std=c++20 -Ibuild/.gens/demo/linux/x86_64/release/rules/protobuf/src -DNOMINMAX -pthread -o build/.objs/demo/linux/x86_64/release/src/main.cc.o src/main.cc checking for flags (-MMD -MF) ... ok checking for flags (-fdiagnostics-color=always) ... ok checking for g++ ... /opt/rh/gcc-toolset-12/root/usr/bin/g++ checking for the linker (ld) ... g++ checking for /opt/rh/gcc-toolset-12/root/usr/bin/g++ ... ok checking for flags (-fPIC) ... ok checking for flags (-pthread) ... ok [ 60%]: linking.release demo /opt/rh/gcc-toolset-12/root/usr/bin/g++ -o build/linux/x86_64/release/demo build/.objs/demo/linux/x86_64/release/src/main.cc.o build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o -m64 -L/usr/lib64 -lgrpc -laddress_s orting -lre2 -lupb -lcares -lz -lgpr -lssl -lcrypto -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_hash -labsl_city -labsl_low_level_hash -labsl_random_distributions -labsl_random_seed_sequences -labsl_random_internal_pool_urbg -lab sl_random_internal_randen -labsl_random_internal_randen_hwaes -labsl_random_internal_randen_hwaes_impl -labsl_random_internal_randen_slow -labsl_random_internal_platform -labsl_random_internal_seed_material -labsl_random_seed_gen_exceptio n -labsl_statusor -labsl_status -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_exponential_biased -labsl_cordz_handle -labsl_bad_optional_access -labsl_str_format_internal -labsl_synchronization -labsl_gr aphcycles_internal -labsl_stacktrace -labsl_symbolize -labsl_debugging_internal -labsl_demangle_internal -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_strings -labsl_strings_internal -lrt -labsl_base -labsl_spinlock_wait -la bsl_int128 -labsl_throw_delegate -labsl_time_zone -labsl_bad_variant_access -labsl_raw_logging_internal -labsl_log_severity -pthread /opt/rh/gcc-toolset-12/root/usr/bin/ld: build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o: in function InitDefaultsscc_info_Test_demo_2eproto()': demo.pb.cc:(.text+0x1f): undefined reference to google::protobuf::internal::VerifyVersion(int, int, char const*)' /opt/rh/gcc-toolset-12/root/usr/bin/ld: build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o: in function InitDefaultsscc_info_TestCase_demo_2eproto()': demo.pb.cc:(.text+0xa5): undefined reference to google::protobuf::internal::VerifyVersion(int, int, char const*)' /opt/rh/gcc-toolset-12/root/usr/bin/ld: build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o: in function test::TestCase::TestCase(test::TestCase const&)': demo.pb.cc:(.text+0x2e2): undefined reference to google::protobuf::internal::ArenaStringPtr::Set(google::protobuf::internal::ArenaStringPtr::EmptyDefault, std::__cxx11::basic_string<char, std::char_traits, std::allocator > co nst&, google::protobuf::Arena*)' /opt/rh/gcc-toolset-12/root/usr/bin/ld: build/.objs/demo/linux/x86_64/release/gens/rules/protobuf/src/demo.pb.cc.o: in function `test::TestCase::Clear()': ...

ivanallen avatar Jun 27 '23 07:06 ivanallen

Bot detected the issue body's language is not English, translate it automatically.


Title: package dependency version error

Issues-translate-bot avatar Jun 27 '23 07:06 Issues-translate-bot

add_requireconfs("grpc.protobuf-cpp", {override = true, version = "3.14.0"}) -- 没有用

内部依赖不想走系统库,那就得依赖改成 system = false,改版本没用

add_requireconfs("grpc.protobuf-cpp", {override = true, system = false})

waruqi avatar Jun 28 '23 01:06 waruqi

Bot detected the issue body's language is not English, translate it automatically.


add_requireconfs("grpc.protobuf-cpp", {override = true, version = "3.14.0"}) -- didn't work

If you don’t want to use the system library for internal dependencies, you have to change the dependency to system = false, and changing the version is useless

add_requireconfs("grpc.protobuf-cpp", {override = true, system = false})

Issues-translate-bot avatar Jun 28 '23 01:06 Issues-translate-bot

add_requireconfs("grpc.protobuf-cpp", {override = true, version = "3.14.0"}) -- 没有用

内部依赖不想走系统库,那就得依赖改成 system = false,改版本没用

add_requireconfs("grpc.protobuf-cpp", {override = true, system = false})

这个我也试了,也不行

ivanallen avatar Jun 28 '23 02:06 ivanallen

Bot detected the issue body's language is not English, translate it automatically.


add_requireconfs("grpc.protobuf-cpp", {override = true, version = "3.14.0"}) -- didn't work

Internal dependencies do not want to use the system library, then you have to change the dependency to system = false, changing the version is useless

add_requireconfs("grpc.protobuf-cpp", {override = true, system = false})

I tried this too, it doesn't work

Issues-translate-bot avatar Jun 28 '23 02:06 Issues-translate-bot