【发布时间】:2018-02-08 13:11:41
【问题描述】:
我使用 cmake 和 cpack 为我的软件制作了安装程序。
在 cpack 安装程序中,用户选择安装软件的位置。
比如说C:\Users\MySoftware
我的所有.exe 和python 文件都使用cmake 的目标选项进入其中。
使用cpack,它将C:\Users\MySoftware 添加到我的环境变量中。
那么我所有的 .exe 都可以从窗口 cmd 使用。
我有一个.bat,它以某种顺序运行多个.exe,并带有一些选项等...
在它的中间,它运行一个python脚本。
python C:\HardPATH/mypython.py -i %var1% -m %var2% -t %var3% -o %var4% -I %var5% .
我正在尝试在使用 cmake 或 cpack 时修改 C:\HardPath
我的问题是,我找不到根据用户选择安装软件的位置使用cmake 或cpack 编辑“HardPATH”的方法。
并且因为它是.py 而不是.exe,所以即使它位于添加到环境路径的文件夹中,它也不起作用。
我尝试使用configure_file,但它很快就会在配置步骤中执行,因此在用户使用 cpack 安装程序选择“HardPATH”之前。也许使用add_custom_command 有可能?但我不知道如何使用此命令更改 .bat 中的硬路径,或者如果可能的话。
知道如何解决这个“HardPATH”问题吗?
IF(CMAKE_SYSTEM_NAME STREQUAL Windows)
IF(Pack)
INSTALL(TARGETS
exe1
exe2
etc
DESTINATION bin)
find_program(PYTHON "python")
if (PYTHON)
INSTALL(FILES mypython.py DESTINATION bin)
endif()
ELSE(Pack)
INSTALL(TARGETS
exe1
exe2
etc
DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
find_program(PYTHON "python")
if (PYTHON)
INSTALL(FILES mypython.py DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endif()
ENDIF(Pack)
ENDIF(CMAKE_SYSTEM_NAME STREQUAL Windows)
并在 env 变量中添加路径,在调用这个的主 cmakelist 中,我有:
set(CPACK_PACKAGE_NAME "CPackExampleInstaller")
SET(CPACK_NSIS_MODIFY_PATH ON)
INCLUDE(CPack)
如果我输入echo %PATH%
我看到了我选择在其中安装我的软件的位置。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9. 0\libnvvp;C:\Python36\Scripts\;C:\Python36\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1. 0\;C:\临 gram Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\CMake\bin;C:\Program Files\Git\cmd;C:\Program Files\Git \m ingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\xxx\Desktop\testCode\bin;;C:\Users\xxxx\AppData\Local\GitHubDesktop\ bin;D:\xxxx\Docker 工具箱
我可以在 C:\Users\xxx\Desktop\testCode\bin 中调用 .exe,而无需输入完整路径。但不是蟒蛇
【问题讨论】:
-
你把.bat文件的代码贴出来怎么样,或许我能清楚你想要什么。
-
对不起,我认为它已经足够清楚了。 python C:\HardPATH/mypython.py -i %var1% -m %var2% -t %var3% -o %var4% -I %var5% 。我在使用 cmake 或 cpack 时尝试修改 C:\HardPath
-
然后将路径作为变量发送并使用
%1捕获它,但我无法向您展示,因为我没有您的任何代码。另外,不要向 cmets 添加代码,而是编辑您的问题并将其添加到那里。 -
我不明白你的意思。你想要哪个代码? cmakelists.txt ? .bat 文件?我不明白
-
是的,您需要代码方面的帮助,所以发布一些代码。
标签: windows batch-file cmake environment-variables cmake-custom-command