Qt、OSG独立环境变量的建立,临时设置运行环紧变量启动vc2008

在使用Qt 和OpenSceneGraph 的时候,有时候不想在系统中设置各自的需要的环紧变量,如:QTDIR,OSG_ROOT 和 添加 PATH。 只是在编译和运行单独代码时,启动。这时就要用一个批处理文件来临时设置环境变量和启动VC2008。当不用这个批处理文件启动VC2008时,不回自动设置相关的环境变量,

a)这样对防止版本冲突有好处。

b)这样也把Qt 或 OpenSceneGraph的根目录下的相关include、lib 和bin 文件夹 及 批处理文件同时copy 到另外机器上(未安装Qt 、OpenSceneGraph,但有 VC2008)的任何位置,直接双击就可以启动了,再设置project 中的lib、 include项就OK了。

具体做法就是:

1. 在 Qt 或 OpenSceneGraph的根目录下建立一个批处理文件。

//=====================================================

   Qt----------qtvars.bat

//=====================================================

@echo off
rem
rem This file is generated by the Qt installer
rem

echo Setting up a Qt environment...

set QTDIR=C:\Qt462
echo -- QTDIR set to C:\Qt462
set PATH=C:\Qt462\bin;%PATH%
echo -- Added C:\Qt462\bin to PATH
set QMAKESPEC=win32-msvc2008
echo -- QMAKESPEC set to "win32-msvc2008"

if not "%1"=="vsvars" goto ENDVSVARS
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
:ENDVSVARS

if not "%1"=="vsstart" goto ENDVSSTART
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
devenv
:ENDVSSTART

 

//===================================================

OSG-----------OSG_vs2008.bat

//===================================================

@echo off
rem
rem This file is written by Tao Jiang, EZLS
rem

echo Setting up a OSG environment...

set pa=%~dp0                                          // 这一步很关键是获得批处理文件所在的盘符和路径
echo %pa%
set OSG_ROOT=%pa%
echo -- OSG_ROOT set to OpenSceneGraph3.0.1
set OSG_INCLUDE_PATH=%OSG_ROOT%include
set OSG_LIB_PATH=%OSG_ROOT%lib
echo -- OSG_INCLUDE_PATH set to "OpenSceneGraph3.0.1\include"
echo -- OSG_LIB_PATH set to "OpenSceneGraph3.0.1\lib"
set OSG_FILE_PATH=%OSG_ROOT%OpenSceneGraph-Data-3.0.0
echo -- OSG_FILE_PATH set to "OpenSceneGraph3.0.1\OpenSceneGraph-Data-3.0.0"
set PATH=%OSG_ROOT%bin;%PATH%
echo -- Added OpenSceneGraph3.0.1\bin to PATH 

call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
devenv

rem call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"

 

2. copy 根目录下相关文件夹和这个批处理文件到 其他机器上任何位置,即可以运行了。

附带上自己的一个Readme.txt

Running OpenSceneGraph3.0.1  without installation.

1. When using OSG library on Windows, only need copy the folder "OpenSceneGraph3.0.1" to the place where you want to put it.
2. Run the batch file "OSG_vs2008.bat" to set up the running environment and lauch Vision Studio 2008.
3. In Vision Studio 2008, open an example under the director "...\OpenSceneGraph3.0.1\examples", such as "Simple_example".
4. Build this example or new project.

ps:
If your Vision Studio 2008 is not installed under the default director, such as"C:\Program Files\Microsoft Visual Studio 9.0\", you need specify the director where the file "devenv.exe" exists instead of one in "OSG_vs2008.bat" .

 

参考一些批处理时的变量。

@echo offecho 当前盘符:%~d0

echo 当前盘符和路径:%~dp0

echo 当前批处理全路径:%~f0

echo 当前盘符和路径的短文件名格式:%~sdp0

echo 当前CMD默认目录:%cd%

pause

windows 的快捷方式不能使用相对路径。可以用批处理文件获取相对路径。

set pa=%cd% 将当前路径赋值给pa

echo %pa% 显示pa变量

 

 

参考二。

@echo off
echo %~n1
echo %~nx1
echo %~dp1
echo %~d1
pause  
 
这是cmd 中 for/? 帮助的解释
 
%~fI        - 将 %I 扩充到一个完全合格的路径名
     %~dI        - 仅将 %I 扩充到一个驱动器号
     %~pI        - 仅将 %I 扩充到一个路径
     %~nI        - 仅将 %I 扩充到一个文件名
     %~xI        - 仅将 %I 扩充到一个文件扩展名
     %~sI        - 扩充的路径只含有短名
     %~aI        - 将 %I 扩充到文件的文件属性
     %~tI        - 将 %I 扩充到文件的日期/时间
     %~zI        - 将 %I 扩充到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩充
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩充到
                   空字符串
 
可以组合修饰符来得到多重结果:
 
     %~dpI       - 仅将 %I 扩充到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩充到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩充到一个带有短名的完整路径名
     %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
                   到找到的第一个驱动器号和路径。 
     %~ftzaI     - 将 %I 扩充到类似输出线路的 DIR

参考三:

批处理:获取某路径下的所有文件名

@echo off
:: 判断输入路径是不是文件夹,如果是,则获取文件夹下的所有文件名(包括子文件夹下的)
:: 如果要文件名带上路径,则需要在dir这一句的%%~nxi上作改动

if exist list.txt del list.txt /q
:input
cls
set input=:
set /p input=           请输入要进行判断的路径:
set "input=%input:"=%"
:: 上面这句为判断%input%中是否存在引号,有则剔除。
if "%input%"==":" goto input
if not exist "%input%" goto input
for %%i in ("%input%") do if /i "%%~di"==%%i goto input
pushd %cd%
cd /d "%input%">nul 2>nul || exit
set cur_dir=%cd%
popd
for /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do echo %%~nxi>>list.txt
if not exist list.txt goto no_file
start list.txt
exit

:no_file
cls
echo       %cur_dir% 文件夹下没有单独的文件
pause

 

你可能感兴趣的:(Microsoft,File,input,qt,Path,include)