delphi环境变量设置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi环境变量设置问题相关的知识,希望对你有一定的参考价值。

困惑死我了。
1、单元里加入DateUtils。提示错误dentifier redeclared ‘DateUtils’我想是不是没这个包。
2、疑问:libraypaths是用到了第三方包就要放到这个路径上的吧?他们几个路径是并列关系吗,还是优先上边的。
3、component 的installcomponent是编译pas成包吧?installpakeages是读取包吧?
4、然后我找到DBUTILS.BPL载入,提示
Package F:\ABCM源码\乌石化全厂作业成本实际核算系统(升级)\09-源程序\DBUtils\DBUtils.bpl can't be installed because another package with the same base name is already loaded (F:\ABCM源码\bin\DBUtils.bpl)
为啥出现这个现象呢,调试程序的时候不是说找不到么,载入的时候咋提示存在呢。?
5、帮忙解释下delphi的常用的环境变量设置,说的好的另加50分。谢谢。
1楼找不到呢,我认为这个单元在某个包里边。
2我知道俩概念啊,我想是不是因为自己环境变量设置的比较乱,才导致现在频出错误。

再加100分,希望高手指点迷津。我QQ
5
6
8
0
4
7
3
6
1

回答
1:DateUtils是个单元名,首先你要在路径中指出这个单元的路径。
2:前一个问题我们公司是这样操作,后一个路径是优先前面的。
3:你说的是对的。
4:如果设置好路径,安装成功,应该不会出现上述情况。
5:一般装完DELPHI,其环境变量基本上IMPORTS, BIN, SOURCE中的子文件夹等,都是连接其控件,基类等等。
参考技术A 首先,环境变量和工程文件包含路径是两个概念。

其次,新增控件应该在

Tools-Environment obtions-library-Libray path 中包含控件路径。

否则,设计时,面版中的控件可以引用到程序中,但编译时会提示缺少文件。

为 CTest 测试设置环境变量时遇到问题

【中文标题】为 CTest 测试设置环境变量时遇到问题【英文标题】:Trouble setting environment variables for CTest tests 【发布时间】:2018-08-03 22:15:00 【问题描述】:

我的任务是为基于 c++ 的项目构建 python 绑定(使用 swig)。该项目使用 cmake 构建和 ctest 进行测试,并且应该将绑定的构建和测试集成到其中。

我已经让构建工作并且测试在手动运行时工作,但我必须设置几个环境变量才能让它们工作,而我在为自动化过程设置这些变量时遇到了麻烦。

我需要设置 LD_LIBRARY_PATH 和 PYTHONPATH。 PYTHONPATH 我可以通过在测试脚本中操作 sys.path 来解决问题,但使用 LD_LIBRARY_PATH 就更难了。到目前为止,我已将以下内容添加到测试目录中的 CMakelists.txt 中:

#Python wrapper testing

find_package(PythonInterp 3.5 REQUIRED)

if (NOT PYTHONINTERP_FOUND)
  message(STATUS "Python interpreter NOT found")
else(NOT PYTHONINTERP_FOUND)
  message(STATUS "Python interpreter found")
  ADD_TEST(NAME testPyMyproj
       COMMAND $PYTHON_EXECUTABLE $CMAKE_CURRENT_SOURCE_DIR/test_scripts/test_pyMyproj.py
       )
  set_property(TEST testPyMyproj PROPERTY ENVIRONMENT LD_LIBRARY_PATH=$CMAKE_BINARY_DIR/lib/)
endif (NOT PYTHONINTERP_FOUND)

我得到的错误是

ImportError: libMyproj.so: cannot open shared object file: No such file or directory

我的绑定链接到哪个库,位于$CMAKE_BINARY_DIR/lib/ 指定的目录中。

我认为这意味着$LD_LIBRARY_PATH 设置不正确,但我不知道我做错了什么。

有没有办法在测试中检查变量的状态是什么?谁能发现我做错了什么?

【问题讨论】:

谢谢。因为我怀疑变量是空的。 好吧,它并没有解决我做错的主要问题。 我不知道你想做什么。 I need to set LD_LIBRARY_PATH and PYTHONPATH. PYTHONPATH I can get around that by...你不能只设置环境变量吗? 我可以手动设置它们,然后它就可以工作了,但这需要在 docker 容器中自动运行。我正在尝试以不依赖于系统预先存在的状态的方式设置它们。 为什么不使用os.environ["LD_LIBRARY_PATH"] = "foo" 【参考方案1】:

您可以使用cmake -E env 命令将环境变量设置为调用测试的一部分。您可以将add_test() 调用修改为如下内容:

ADD_TEST(NAME testPyMyproj
    COMMAND $CMAKE_COMMAND -E env
        LD_LIBRARY_PATH=$CMAKE_BINARY_DIR/lib:$ENVLD_LIBRARY_PATH
        $PYTHON_EXECUTABLE $CMAKE_CURRENT_SOURCE_DIR/test_scripts/test_pyMyproj.py
)

以上假设是基于 Unix 的主机环境,但如果需要,您可以通过一些工作将其概括为支持所有平台/生成器类型。

另一种选择是使用ENVIRONMENT 测试属性,它应该实现基本相同的事情:

set_tests_properties(testPyMyproj PROPERTIES
    ENVIRONMENT LD_LIBRARY_PATH=$CMAKE_BINARY_DIR/lib:$ENVLD_LIBRARY_PATH)

【讨论】:

请注意,要将 ENVIRONMENT 属性与多个变量一起使用,您必须将它们作为单个分号分隔的字符串提供。 另见:cmake.org/cmake/help/latest/command/set_property.htmlset_property(TEST [<test1> ...] APPEND PROPERTY ENVIRONMENT [value1 ...]) 如果您需要在变量值中使用分号(例如 Windows 上的 PATH),请使用类似 \\$<SEMICOLON> 的内容 具有多个值的示例:set_property(TEST unit_test PROPERTY ENVIRONMENT LD_LIBRARY_PATH="$ENVLD_LIBRARY_PATH"\\$opt/poky/1.4.2/sysroots/core2-poky-linux /lib)【参考方案2】:

Craig Scott 已经通过 ENVIRONMENT 测试属性提供了一个很好的解决方案。我只想通过 Visual Studio 生成器和生成器表达式添加它在 Windows 上的工作原理:

set_tests_properties(
    name_of_test_one
    name_of_test_two
PROPERTIES
    # Make sure DLL is found by adding its directory to PATH
    ENVIRONMENT "PATH=$<TARGET_FILE_DIR:library_target_name>\;$ENVPATH"
)

注意 1:不要使用冒号,而是使用转义的分号 注 2:我使用的是更灵活的 $ 生成器表达式

【讨论】:

以上是关于delphi环境变量设置问题的主要内容,如果未能解决你的问题,请参考以下文章

在DELPHI中怎么设置全局变量

fluent的UDF环境变量设置问题

如何评估 $(BDS) 等 Delphi 的“环境变量”?

JAVA设置环境变量的目的

Linux设置环境变量

Jenkins设置环境变量