【发布时间】:2017-09-29 08:37:29
【问题描述】:
我想用 C++ 链接两个项目。具体来说,我想从 project2 中的 project1 调用一个函数。我已经编写了正确的代码来链接这些项目,但我必须链接和 Makefiles(一起构建)?或不?现在如何构建论文项目?当我在project2中调用“make”时必须调用project1中的“make”?
谢谢!
【问题讨论】:
标签: c++ makefile build cmake gnu
我想用 C++ 链接两个项目。具体来说,我想从 project2 中的 project1 调用一个函数。我已经编写了正确的代码来链接这些项目,但我必须链接和 Makefiles(一起构建)?或不?现在如何构建论文项目?当我在project2中调用“make”时必须调用project1中的“make”?
谢谢!
【问题讨论】:
标签: c++ makefile build cmake gnu
我认为你想要的是一个 makefile 依赖项?例如:
在makefile1中:
all:
gcc my_file.c -o libMyLib.a
在makefile2中:
all: my_file.c
gcc main2.c -o MyProg.exe
当您更改 projekt1(my_file.c) 中的函数并在 project2 上调用 make 时,它会注意到 my_file.c 自上次构建 project2 以来已更改并再次构建它。
如果 project2 取决于 project1 的结果(即libMyLib.a;不仅取决于.c-文件),您需要make 他们两者。
您可以从 makefile2 调用 project1 上的 make,例如:
makefile2:
all: libMyLib.a
$(MAKE) all -C /path/to/project1
gcc main2.c -o MyProg.exe
【讨论】:
这两个项目都是“二进制”的?还是“静态”/“动态”库? 如果两个项目都是二进制的,则无法链接它,因为定义了两个“主要”功能。
如果两个项目都只是函数定义,则将它们设为共享库,然后使用这些共享库创建新的二进制文件。
【讨论】: