张品戈*_*张品戈 5 c++ makefile cmake ethereum evm
\n我尝试构建示例文件夹通过 cmake 在此项目中但这里有一些错误称为:
\ncmake .
-- Configuring done\nCMake Error at CMakeLists.txt:23 (add_executable):\n Target "evmc-example" links to target "evmc::evmc_cpp" but the target was\n not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\nCMake Error at CMakeLists.txt:23 (add_executable):\n Target "evmc-example" links to target "evmc::loader" but the target was not\n found. Perhaps a find_package() call is missing for an IMPORTED target, or\n an ALIAS target is missing?\n\n\nCMake Error at CMakeLists.txt:19 (add_executable):\n Target "evmc-example-static" links to target "evmc::evmc_cpp" but the\n target was not found. Perhaps a find_package() call is missing for an\n IMPORTED target, or an ALIAS target is missing?\n\n\nCMake Error at CMakeLists.txt:19 (add_executable):\n Target "evmc-example-static" links to target "evmc::evmc" but the target\n was not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\nCMake Error at CMakeLists.txt:19 (add_executable):\n Target "evmc-example-static" links to target "evmc::evmc" but the target\n was not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\nCMake Error at CMakeLists.txt:16 (add_library):\n Target "evmc-example-host" links to target "evmc::evmc_cpp" but the target\n was not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\nCMake Error at example_vm/CMakeLists.txt:10 (add_library):\n Target "example-vm-static" links to target "evmc::evmc" but the target was\n not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\nCMake Error at example_vm/CMakeLists.txt:5 (add_library):\n Target "example-vm" links to target "evmc::evmc" but the target was not\n found. Perhaps a find_package() call is missing for an IMPORTED target, or\n an ALIAS target is missing?\n\n\nCMake Error at example_precompiles_vm/CMakeLists.txt:10 (add_library):\n Target "example-precompiles-vm-static" links to target "evmc::evmc" but the\n target was not found. Perhaps a find_package() call is missing for an\n IMPORTED target, or an ALIAS target is missing?\n\n\nCMake Error at example_precompiles_vm/CMakeLists.txt:5 (add_library):\n Target "example-precompiles-vm" links to target "evmc::evmc" but the target\n was not found. Perhaps a find_package() call is missing for an IMPORTED\n target, or an ALIAS target is missing?\n\n\n-- Generating done\nCMake Generate step failed. Build files cannot be regenerated correctly.\nmake: *** [cmake_check_build_system] Error 1\n
Run Code Online (Sandbox Code Playgroud)\nmake
Consolidate compiler generated dependencies of target evmc-example-host\n[ 14%] Built target evmc-example-host\nConsolidate compiler generated dependencies of target evmc-example\n[ 21%] Linking CXX executable evmc-example\nld: library not found for -levmc::loader\nclang: error: linker command failed with exit code 1 (use -v to see invocation)\nmake[2]: *** [evmc-example] Error 1\nmake[1]: *** [CMakeFiles/evmc-example.dir/all] Error 2\nmake: *** [all] Error 2\n
Run Code Online (Sandbox Code Playgroud)\n这是我的 CMakeLists:
\n# EVMC: Ethereum Client-VM Connector API.\n# Copyright 2016-2019 The EVMC Authors.\n# Licensed under the Apache License, Version 2.0.\n\ncmake_minimum_required(VERSION 3.13)\n\nset (CMAKE_C_COMPILER /usr/bin/clang)\nset (CMAKE_CXX_COMPILER /usr/bin/clang++)\nset (CMAKE_CXX_STANDARD 17)\n\ninclude(GNUInstallDirs)\n\nadd_subdirectory(example_vm)\nadd_subdirectory(example_precompiles_vm)\n\nadd_library(evmc-example-host STATIC example_host.cpp)\ntarget_link_libraries(evmc-example-host PRIVATE evmc::evmc_cpp)\n\nadd_executable(evmc-example-static example.c)\ntarget_link_libraries(evmc-example-static PRIVATE evmc-example-host evmc::example-vm-static evmc::evmc)\ntarget_compile_definitions(evmc-example-static PRIVATE STATICALLY_LINKED_EXAMPLE)\n\nadd_executable(evmc-example example.c)\ntarget_link_libraries(evmc-example PRIVATE evmc-example-host evmc::loader)\n\ninclude_directories(../include)\n
Run Code Online (Sandbox Code Playgroud)\n这是我的项目结构:
\nevmc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 AUTHORS.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CHANGELOG.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeCache.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CNAME\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CPackConfig.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CPackSourceConfig.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Doxyfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 appveyor.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bindings\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 java\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 rust\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeCache.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeFiles\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CPackConfig.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CPackSourceConfig.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake_install.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 evmcConfig.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 evmcConfigVersion.cmake\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 circle.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Config.cmake.in\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 EVMC.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Hunter\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 cable\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake_install.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 codecov.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 EVMC.md\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Host_Guide.md\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 VM_Guide.md\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 VM_Tester.md\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 custom.dox\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 evmcConfig.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 evmcConfigVersion.cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeCache.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeFiles\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake_install.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example-rust-vm\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example.c\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example_host.cpp\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example_host.h\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example_precompiles_vm\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example_vm\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 libevmc-example-host.a\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 use_evmc_in_cmake\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 use_instructions_in_cmake\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 evmc\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeFiles\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake_install.cmake\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hex\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 instructions\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 loader\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mocked_host\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 target\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CACHEDIR.TAG\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 debug\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake_package\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compilation\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gomod\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tools\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 unittests\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vmtester\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tools\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 commands\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 evmc\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 utils\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vmtester\n
Run Code Online (Sandbox Code Playgroud)\n我已经升级了我在这个项目中使用的所有工具:clang、cmake...
\n但还是无法正常运行,怎么办?
\ntas*_*hyy -1
这发生在我身上,因为我用于库的路径不正确,它没有指向包含 CMakeLists.txt 的目录。
我在顶级 CMakeLists.txt 中使用 FetchContent 包含 cpr,并意外将 FETCHCONTENT_SOURCEDIR_CPR 设置为上述级别。我在 cpr/cpr-master 中有 cpr 源,但刚刚将其设置为 cpr。
更笼统地回答,这意味着 evmc 的路径可能不正确。