Lion&Cat 2021-01-09 17:03 采纳率: 0%
浏览 93

epanet python package

我想建立一个epanet python package

所以我就用按照网上的方法,按照以下的代码就行导入这个库:

The following method uses scikit-build to invoke cmake for compiling and linking the shared libaries, and builds a python wheel.

./scripts/clean.sh python3 setup.py sdist bdist_wheel

Test your builds using the following commands.

cd test && \ pipenv install ../dist/*.whl && \ pipenv install pytest && \ pipenv run pytest

This python library was packaged in the following way:

python3 setup.py sdist bdist_wheel python3 -m twine upload dist/*

 

当我在建立这个epanet python  package的时候,输入下列代码: python setup.py sdist bdist_wheel后, 

我就遇到了下列问题: 

CMake Error at EPANET/CMakeLists.txt:50  (set_property): 

  set_property could not find TARGET  epanet2.  Perhaps it has not yet been created. 

 

CMakeList.txt第50行的代码是: 

set_property(TARGET epanet2 PROPERTY  SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE) 

 

请问遇到这种问题该怎么解决? 

 

谢谢大家! 

 

  • 写回答

1条回答 默认 最新

  • 韩悸桉 2024-04-24 15:15
    关注

    这通常意味着在尝试设置属性之前,epanet2 目标尚未被创建。

    要解决这个问题,你需要检查以下几点:

    目标创建顺序:确保 epanet2 目标在尝试设置属性之前已经被正确创建。这通常涉及到查找 add_library 或 add_executable 调用,这些调用应该定义 epanet2 目标。

    CMakeLists.txt 文件的结构:检查 CMakeLists.txt 文件,确保所有的 add_library 或 add_executable 调用都在设置属性的代码之前。

    依赖关系:如果 epanet2 目标依赖于其他目标或库,确保这些依赖关系被正确设置,并且这些依赖目标在 epanet2 目标之前被创建。

    子目录:如果 epanet2 目标是在一个子目录中定义的,确保子目录的 CMakeLists.txt 文件被正确包含在主 CMakeLists.txt 文件中,并且子目录的 CMake 逻辑在尝试设置属性之前执行。

    CMake版本:确保你使用的 CMake 版本与 EPANET 的构建系统兼容。有时,新的 CMake 版本可能引入了一些变化,这可能导致旧的构建脚本出现问题。

    路径和名称:检查 epanet2 目标的名称和路径是否正确,没有拼写错误或大小写不匹配的问题。

    如果你仍然无法解决问题,你可能需要查看更详细的构建日志或运行 cmake 时使用 --trace 选项,这将提供有关构建过程的更多信息,有助于你定位问题。

    此外,考虑到你正在尝试构建一个 Python 包,确保你遵循了 EPANET 的构建指南,并且所有必要的依赖项和先决条件都已满足。有时,构建系统可能需要特定的库或工具链版本,这些版本可能不在你的系统上安装或配置不正确。

    最后,如果 EPANET 是一个开源项目,查看其官方文档、GitHub 仓库的 Issues 或相关论坛可能会提供更多帮助。可能有其他人遇到了相同的问题,并且可能已经分享了解决方案。

    评论

报告相同问题?