C++ 使用Code::Blocks、plink和makefiles进行远程编译时,无法访问环境变量

C++ 使用Code::Blocks、plink和makefiles进行远程编译时,无法访问环境变量,c++,makefile,environment-variables,codeblocks,plink,C++,Makefile,Environment Variables,Codeblocks,Plink,我试图在Windows7 Professional SP1下设置Code::Blocks,以便在linux服务器上使用PuTTY link->plink进行远程编译,但我对该主题不太熟悉。这是我使用的手册: 我将代码块配置如下: 设置->编译器和调试器->全局编译器设置->工具链执行: 程序文件->制作程序:plink.exe 项目->属性->项目设置: Makefile:Makefile\u名称 [选中]这是一个自定义生成文件 执行方向:Z:\Path\to\Samba\Share 项目的生成

我试图在Windows7 Professional SP1下设置Code::Blocks,以便在linux服务器上使用PuTTY link->plink进行远程编译,但我对该主题不太熟悉。这是我使用的手册:

我将代码块配置如下:

设置->编译器和调试器->全局编译器设置->工具链执行:

程序文件->制作程序:plink.exe

项目->属性->项目设置:

Makefile:Makefile\u名称

[选中]这是一个自定义生成文件

执行方向:Z:\Path\to\Samba\Share

项目的生成选项->调试->生成命令:

source ~/.login;/path/to/my/application/my_application;$<
构建项目/目标:

$make-X-sshuser@linux_server-pw my_great_password make-f$makefile-C/path/to/my/makefile

编译单个文件:

$make-X-sshuser@linux_server-pw my_great_password make-f$makefile-C/path/to/my/makefile$file

清洁项目/目标:

$make-X-sshuser@linux_server-pw my_great_password make-f$makefile clean-C/path/to/my/makefile

询问是否需要重建:

$make-X-sshuser@linux_server-pw my_great_password make-q-f$makefile-C/path/to/my/makefile

静默构建:

$make-X-sshuser@linux_server-pw my_great_password make-s-f$makefile-C/path/to/my/makefile

顺便问一下,我是调用linux服务器上的编译器/链接器,还是Code::Blocks本身编译并链接linux服务器上的源代码?原谅我的无知

我现在面临的问题是,我无法访问makefile中的环境变量:

包括$MY_ENV_VAR/path/to/other/makefile

我收到的错误让我假设,我的_ENV_VAR仍然为空:

/path/to/other/makefile:没有这样的文件或目录

我检查了Code::Blocks是否尝试解析windows计算机的环境变量,但事实并非如此

其他信息:

代码::块版本:

版本:10.05,内部版本:2010年5月27日19:10:05-wx2.8.10 Windows,unicode-32位

Linux服务器:

Linux Linux_服务器2.6.18-238.el5 1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

如果需要,我可以提供更多信息。我还欢迎其他建议,从windows在linux机器上实现远程编译。还是另一个IDE更适合进行远程编译

谢谢你的阅读/帮助

编辑:

我发现有人在NetBeans IDE上有类似的问题:

据我所知,当你通过putty连接时,plink不会像现在这样执行启动脚本。因此,我意识到Code::Blocks在尝试远程编译时没有考虑到我的困难

在我的例子中,我必须显式地获取登录脚本~/.login的源代码才能访问我的环境变量。例如,对于make命令,这意味着:

$make -X -ssh user@linux_server -pw my_great_password "source ~/.login;make -f $makefile" -C /path/to/my/makefile
通过这种方式,a可以远程编译我的软件。为了启动应用程序,我添加了一个构建后步骤:

cmd /c "C:\Program^ Files\PuTTY\putty.exe -load my_session -pw my_great_password"
在密码中,我必须转义一个符号和字符:^&顺便说一句,使用私钥而不是硬编码密码有很多原因。这将加载存储的PuTTY会话,该会话具有以下远程命令:

source ~/.login;/path/to/my/application/my_application;$<
我使用的是C外壳。所以我用$