当前位置:首页 » 编程软件 » 编译文件到指定目录

编译文件到指定目录

发布时间: 2023-05-16 17:02:37

Ⅰ 如何指定Makefile编译目标文件到指定目录

可以参考Makefile视频教程:Makefile工程实践
一步一步从零开始写项目的Makefile
不仅可以编译御扒目标文件到指定目录
源文件、中间生成的临时文件、头文件都可以放到指定目录,这是一个镇颂昌项目的基本需求樱首。

Ⅱ Makefile 怎么把obj文件编译到某个目录

目录结构
Project
- bin
- src [Makefile在这里]
- obj

想要把编译的目标文件放到obj目录派指,
因为cl不能指定目标文件输出路径,
所以目前采取了一种很蛋疼的方式:

代码:
bin = "../bin/program.exe"
obj = "../obj"

link_cmd = "TODO:先留着吧"
linkcmd_vc = "TODO:也留着吧"

objects = $(obj)/main.obj

$(bin) : $(objects)
$(CC) -o $(bin) $(objects)

$(obj)/main.obj : main.c
cd ../obj
$(CC) -c ../src/main.c

就是对于每个文件每次手动改变一下工作目录。

于是为了解决这个问题,扩展的想法是这样:

1. 找到一个Makefile每次尘毁配make都首先执行的部余山分(就像c中的main.c)
2. 在上述部分中,改变当前工作路径。

Ⅲ 如何在编译后,指定安装路径

1. 安装目录变量
在Makefile中,安装目录同样需要使用变量来指定,这样就可以很方便的修汪瞎改文件的安装路径。安装目录的标准命名下边将一一介绍。这些变量基于标准的文件系统结构,这些变量的变种在SVR4、4.4BSD、Linux、Ultrix v4以及其它现代操作系统中都有使用。
安装者希望在调用make是改变这些值,(例如 make prefix=/usr install),或者在配置时改变困弊空这些值(例如 configure –prefix=/usr)。GNU包不会对在该系统上这些变量适合于哪些值做任何猜想,或者说GNU包不会猜测这些包应该被安装到哪里是更合适的:GNU包使用缺省的特定设置是为了以便于所有的GNU包行为一致,它允许安装者做任何自己想要的布局。
以下所罗列的两个变量是指定安装文件的根目录。所有其它安装目录都是它们的子目录。注意:文件不能直接安装在这两个目录下。
prefix
这个变量(通常作为实际文件安装目录的父目录,可以理解为其它实际文件安装目录的前缀)用于构造下列(除这两个安装根目录以外的其它目录变量)变量的缺省值。变量“prefix”缺省值是“/usr/local”。创建完整的GNU系统时,变量prefix的缺省值是空值,“/usr”是“/”的符号连接符文件。(如果使用“Autoconf”工具,它应该写成“@prefix@”)。注意:当更改了变量“prefix”以后重新执行“make install”,不会导致可执行程序(终极目标)的重建。
exec_prefix
这个前缀用于构造下列变量的缺省值。变量“exec_prefix”缺省值是“$(prefix)”(如果使用“Autoconf”工具,它应该写为“@exec_prefix@”)。通常,“$(exec_prefix)”目录中的子目录下存放和机器相关文件(例如可执行文件和例程库)。“$(prefix)”目录的子目录存放通用的一般文件。同样:改变“exec_prefix”的值之后执行“make install”,不会重建可执行程序(终极目标)。
文件(包括可执行程序、说明文档等)的安装目录:
bindir
用于安装一般用户可运行的可执行程序。通常它的值为:“/usr/local/bin”,使用时应写为:“$(exec_prefix)/bin”。(使用“Autoconf”工具时,应该为“@bindir@”)
sbindir
安装可在shell中直接调用执行的程序。这些命令仅对系统管理员有用(系统管理工具)。通常它的值为:“/usr/local/sbin”,要求在使用时应写为:“$(exec_prefix)/sbin”。(使用“Autoconf”工具时,应该为“@sbindir@”)
libexecdir
用于安装那些通常不是由用户直接使用,而是由其它程序调用的可执行程序。通常它的值为:“/usr/local/libexec”,要求在使用时应写为:“$(exec_prefix)/libexec”。(使用“Autoconf”工具时,应该为“@libexecdir@”)
程序执行时使用的数据文件可从以下两个方面来分类:
1. 是否可由程序更改。分为两类:程序可修改和不可修改的文件(虽然用户可编辑其中某些文件)。
2. 是否和体系结构相关。分为两类:体系结构无关文件,可被所有类型的机器共享;体系结构相关文件,仅可被相同类型机器、操作系统共享;其它的就是那些不能被任何两个机器共享的文件。
这样就存在六种不同的可卜含能。除编译生成的目标文件(.o文件)和库文件以外,不推荐使用那些和特定机器体系结构相关的文件,使用和体系无关的数据文件更加简洁,而且,它的实现也并不非常困难。
在Makefile中应该使用以下变量为不同类型的文件指定对应的安装目录:
`datarootdir'
The root of the directory tree for read-only architecture-independent data files. This should normally be /usr/local/share, but write it as $(prefix)/share. (If you are using Autoconf, write it as `@datarootdir@'.) `datadir''s default value is based on this variable; so are `infodir', `mandir', and others.
Datarootdir
机器体系结构无关的只读数据文件的根目录。通常它的值为:“/usr/local/share”,使用时应写为:“$(prefix)/share”。(使用“Autoconf”工具时,应该为“@datarootdir@”)。‘datadir’的缺省值是基于这个变量的,`infodir', `mandir'等其它变量的值也是如此。
datadir
用于安装和机器体系结构无关的只读数据文件。通常它的值与’datarootdir’一样,但是我们使用两个变量是为了用户能够移动一些程序特定的文件而不修改如man 文件、info文件的路径。通常它的值为:“/usr/local/share”,使用时应写为:“$(prefix)/share”。(使用“Autoconf”工具时,应该为“@datadir@”)。“$(infodir)”和“$(includedir)”作为例外情况,参考后续对它们的详细描述。
Datadir的定义对所有包都一样,因此你应该安装你的数据在它的子目录下。大部分包安装它们的数据在如此目录下:$(datadir)/package-name/.
sysconfdir
用于安装从属于特定机器的只读数据文件,包括:主机配置文件、邮件服务、网络配置文件、“/etc/passwd”文件等。所有该目录下的文件都应该是普通文本文件(可识别的“ASCII”码文本文件)。通常它的值为:“/usr/local/etc”,在使用时应写为:“$(prefix)/etc”。(使用“Autoconf”工具时,应该为“@sysconfdir@”)。
不要将可执行文件安装在这个目录下(可执行文件的安装目录应该是“$(libexecdir)”或者“$(sbindir)”)。也不要在这个目录下安装那些需要更改的文件(系统的配置文件等)。这些文件应该安装在目录“$(localstatedir)”下。
sharedstatedir
用于安装那些可由程序运行时修改的文件,这些文件与体系结构无关。通常它的值为:“/usr/local/com”,要求在使用时应写为:“$(prefix)/com”。(使用“Autoconf”工具时,应该为“@sharedstatedir@”)
localstatedir
用于安装那些可由程序运行时修改的文件,但这些文件和体系结构相关。用户没有必要通过直接修改这些文件来配置软件包,对于不同的配置文件,将它们放在“$(datadir)”或者“$(sysconfdir)”目录中。“$(localstatedir)”值通常为:“/usr/local/var”,在使用时应写为:“$(prefix)/var”。(使用“Autoconf”工具时,应该为“@localstatedir@”)
libdir
用于存放编译后的目标文件(.o)文件库文件(文档文件或者执行的共享库文件)。不要在此目录下安装可执行文件(可执行文件应该安装在目录“$(libexecdir)”下)。变量libdir值通常为:“/usr/local/lib”,使用时应写为:“$(exec_prefix)/lib”。(使用“Autoconf”工具时,应该为“@libdir@”)
infodir
用于安装软件包的 Info 文件。它的缺省值为:“/usr/local/info”,使用时应写为:“$(prefix)/info”。(使用“Autoconf”工具时,应该为“@infodir@”)
lispdir
用于安装软件包的Emacs Lisp 文件的目录。它的缺省值为:“/usr/local/share/emacs/site-lisp”,使用时应写为:“$(prefix)/share/emacs/site-lisp”。当使用Autoconf工具时,应将写为“@lispdir@”。为了保证“@lispdir@”能够正常工作,需要在“configure.in”文件中包含如下部分:

lispdir='${datadir}/emacs/site-lisp'
AC_SUBST(lispdir)

includedir
用于安装用户程序源代码使用“#include”包含的头文件。它的缺省值为:“/usr/local/include”,使用时应写为:“$(prefix)/include”。(使用“Autoconf”工具时,应该为“@includedir@”)。

除gcc外的大多数编译器不会在目录“/usr/local/include”中搜寻头文件,因此这种方式只适用gcc编译器。这一点应该不是一个问题,因为很多情况下一些库需要gcc才能工作。对那些依靠其它编译器的库文件,需要将头文件安装在两个地方,一个由变量“includedir”指定,另一个由变量“oldincludedir”指定。

oldincludedir
它所指定的目录也同样用于安装头文件,这些头文件用于非gcc的编译器。它的缺省值为:“/usr/include”。(使用“Autoconf”工具时,应该为“@oldincludedir@”)。

Makefile在安装头文件时,需要判断变量“oldincludedir”的值是否为空。如果为空,就不使用它进行头文件的安装(一般是安装完成“/usr/local/include”下的头文件之后才安装此目录下的头文件)。

一个软件包的安装不能替换该目录下已经存在的头文件,除非是同一个软件包(重新使用相同的软件包在此目录下安装头文件)。例如,软件包“Foo”需要在“oldincludedir”指定的目录下安装一个头文件“foo.h”时,可安装的条件为:1.目录“$(oldincludedir)”目录下不存在头文件“foo.h”;2. 已经存在头文件“foo.h”,存在的头文件“foo.h”是之前软件包“Foo”安装的。

检查头文件“foo.h”是否来自于软件包Foo,需要在头文件的注释中包含一个“magic”字符串,使用命令“grep”来在该文件中查找这个magic。
`docdir'
The directory for installing documentation files (other than Info) for this package. By default, it should be /usr/local/share/doc/yourpkg, but it should be written as $(datarootdir)/doc/yourpkg. (If you are using Autoconf, write it as `@docdir@'.) The yourpkg subdirectory, which may include a version number, prevents collisions among files with common names, such as README.
这个目录安装除了Info外的该包提供的文档,它的缺省值/usr/local/share/doc/yourpkg,使用时应写为:“$(datarootdir)/doc/yourpkg”。(使用“Autoconf”工具时,应该为“@docdir@”)。Yourpkg子目录可能包括版本号,为了阻止具有相同文件名字的文件冲突,例如README。
`infodir'
The directory for installing the Info files for this package. By default, it should be, but it should be written as (If you are using Autoconf, write it as `@infodir@'.) infodir is separate from docdir for compatibility with existing practice.
这个目录安装该包的info文件。它的缺省值是:/usr/local/share/info, 使用时应写成:$(datarootdir)/info.(使用“Autoconf”工具时,应该为“@infodir@”).infodir从docdir中单独分离出来为了兼容已经存在的practice。
`htmldir'
`dvidir'
`pdfdir'
`psdir'
Directories for installing documentation files in the particular format. (It is not required to support documentation in all these formats.) They should all be set to $(docdir) by default. (If you are using Autoconf, write them as `@htmldir@', `@dvidir@', etc.) Packages which supply several translations of their documentation should install them in `$(htmldir)/'ll, `$(pdfdir)/'ll, etc. where ll is a locale abbreviation such as `en' or `pt_BR'.
这些目录用于安装特定格式的文档(并不要求支持所有这些格式的文档)。缺省值应该设置为:$(docdir)(使用“Autoconf”工具时,应该为“@htmldir @”等)。
`libdir'
The directory for object files and libraries of object code. Do not install executables here, they probably ought to go in $(libexecdir) instead. The value of libdir should normally be /usr/local/lib, but write it as $(exec_prefix)/lib. (If you are using Autoconf, write it as `@libdir@'.)
`lispdir'
The directory for installing any Emacs Lisp files in this package. By default, it should be /usr/local/share/emacs/site-lisp, but it should be written as $(datarootdir)/emacs/site-lisp.
If you are using Autoconf, write the default as `@lispdir@'. In order to make `@lispdir@' work, you need the following lines in your configure.in file:
lispdir='${datarootdir}/emacs/site-lisp'
AC_SUBST(lispdir)

`localedir'
The directory for installing locale-specific message catalogs for this package. By default, it should be /usr/local/share/locale, but it should be written as $(datarootdir)/locale. (If you are using Autoconf, write it as `@localedir@'.) This directory usually has a subdirectory per locale.
这个目录安装该包用于本地特定消息的目录。缺省值是:/usr/local/share/locale, 但是应该写成:`@localedir@'。这个目录常常对每个locale(本地化)都有一个子目录。

Ⅳ 如何让VC++ IDE 编译项目前拷贝一些文件到指定目录

VC6不行,VC.NET可以,在工程设置里面设定Pre-build event。另外有个叫FinalBuilder的软件,功能很强大,用在大型项目Daily Build很有效。
---
1)应该是可以编译的,VC.NET只有比VC6更加符合标准
2)如果用MAKEFILE的话,还需要去在意那些东东么,你可以任意的使用批处理,想干啥都行。

Ⅳ c++编译后那些文件存放到指定文件夹怎么设置

如果用的是如逗核VC++,我大概说下步骤:

打开菜单项“Projects->Settings”(或按Alt+F7),在General选项卡中的Output Directory框中,有两项“Intermediate files”和“Output files”,前者是编译临时文件的存放目录,后者是目标程序的存放目录。都改成“E:\B”就可以了。

------
注:
1,如果用的渣掘是中文版,自己找下对应的项。
2,如果用的是VC2003,VC2005等,菜单项也是类似的。
3,Windows下,目录层次应指判该写“\”而不应该写“/”。

Ⅵ 怎样让Eclipse将java文件编译成class文件到指定的路径

一,设置单个工程的class文件路径 右击工程,BulidPath——Configure Build Path 选择Source选项卡,在下方的Browse选择class的目录OK即可 二:设置全局 打开Window——Preferences 选择Java——Build Path 修改Output folder name即可

Ⅶ VC中如何设置:编译后自动将一些文件拷贝到指定目录

VC 中无法设置该功能。但是可以通过编写 MAKEFILE 文件,然后使用 make 工具对 MAKEFILE 文件中编写的具体源程序以及它们之间的相关依赖关系进行编译,最终来达到将编译后的碰并一些文件自动携吵宴拷贝到指辩银定的子目录。

Ⅷ 如何设置LiteIDE编译输出到特定的目录

首先,将你要设置超链接的文本选择几个字,1个2个都可以,然后复制
插入--书签--把刚才复制的字贴到书签名,点选下面的位置-添加
然后选中目录,右击超链接---选本文档中的位置--出现了你刚才设置的书签,你选中其中一个,确定,就搞定了。
还不明白的话可以密我

Ⅸ 设置VS将编译生成的指定后缀的文件放到指定的文件夹中

  当系统运行一个程虚尘序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还会到Path中指定的路径去找。

  为了将编译生成的指定后缀的文件,存放到指定的文件夹渗誉配中,在程序运行之初(即程序在调用所需DLL等文件前),将指定的文件夹路径追加到专用路径列表中。如此一来,程序在调用相应的DLL等文件时,如果在其它文件中,没有找到需要的DLL文件时,会自动到刚才新添加到专用路径中去查找,如果查找不到程序就会出错。

  根据程序的这个特点,可以在项目属性的“生成事件”中添加相应的命令(对一些宏的利用、环境变量设置及DOS命令的组合),将编丛指译生成的指定后缀的文件,存放到指定的文件夹中。这样使程序生成文件的存放整洁。

  然后,找到项目“属性”的“生成事件”中,进行下面的宏、环境变量设置及DOS命令组合处理语句输入:

Ⅹ 在使用jdk编译时,如何如何将一个JAVA源文件编译到一个指定的文件夹里面

class文件编译后会存放在d盘根目录下

javac -d "d:" D.java

执行临时设置classpath路径下的class

java -classpath "d:" D


热点内容
安卓备忘录怎么转苹果去 发布:2025-07-14 20:57:16 浏览:114
加密货币app 发布:2025-07-14 20:46:57 浏览:553
医院防汛演练方案与脚本 发布:2025-07-14 20:41:11 浏览:777
公网ip做域服务器地址 发布:2025-07-14 20:40:13 浏览:52
php获取几 发布:2025-07-14 20:22:20 浏览:376
旧安卓如何刷入最新安卓 发布:2025-07-14 20:16:14 浏览:763
服务器或网络不给力是什么意思 发布:2025-07-14 20:15:36 浏览:318
爬网站数据库 发布:2025-07-14 20:15:20 浏览:520
邵雍的算法 发布:2025-07-14 20:13:49 浏览:119
离线烧录加密 发布:2025-07-14 20:12:13 浏览:620