Vit*_*sta 26 automake autoconf autotools
我搜索了这个问题的答案,但找不到任何好处.也许他们已经老了,事情发生了变化,所以我再问一次.
我有一个目录结构:
我的项目
SRC
箱子
我想要的是,当我在根目录中制作时,二进制文件放在./bin中,而不是混乱./src.但是怎么样?
编辑:我正在使用C++.我的Makefile.am没什么特别的.只是bin_PROGRAM和_SOURCES变量.
当我运行make时,生成的二进制文件被放入./src.我只想把它们放在./bin中.
Bra*_*den 34
你在这里有错误的想法.
您的构建树就在您运行的任何位置configure.这就是autoconf的设计方式.你的软件包的用户(不想让他们的源代码树混乱)会期望它以这种方式工作.
这种方法是一种更通用的解决方案,比您想象的组织具有更大的灵活性.例如,想要在单独的文件系统上维护源代码和构建文件并不是特别不寻常.
pto*_*ato 27
如果您尝试以不同于预期的方式设置目录,Automake无法很好地应对.你想要的只是编写额外的规则来将二进制文件移动到编译../bin后,这是不必要的复杂.
如果您不想使源目录混乱,请尝试以下操作:
cd my_project
mkdir build
cd build
../configure
make
Run Code Online (Sandbox Code Playgroud)
这将把所有生成的文件(如makefile,二进制文件,目标文件)放在子目录中my_project/build.
Nie*_*ann 14
告诉Automake在某个目录中创建二进制文件的一种方法是将此目录添加到"bin_PROGRAMS"变量中的名称.
考虑以下src/Makefile.am:
bin_PROGRAMS = foo
foo_SOURCES = ...
foo_CPPFLAGS = ...
foo_LDFLAGS = ...
Run Code Online (Sandbox Code Playgroud)
它创建了一个二进制"src/foo",但你可以告诉Automake使用src中的源来创建二进制"bin/foo":
bin_PROGRAMS = $(top_builddir)/bin/foo
__top_builddir__bin_foo_SOURCES = ...
__top_builddir__bin_foo_CPPFLAGS = ...
__top_builddir__bin_foo_LDFLAGS = ...
Run Code Online (Sandbox Code Playgroud)
我尝试了一些包,甚至"让distcheck"吞下它.虽然不能成为一个黑客...
| 归档时间: |
|
| 查看次数: |
14483 次 |
| 最近记录: |