2017-09-29 6 views
1

2つのプロジェクトをC++でリンクしたいと思っています。具体的には、project2のproject1から1つの関数を呼び出したいとします。私はこれらのプロジェクトをリンクするための正しいコードを書いていますが、私はリンクしてMakefileをビルドする必要がありますか?か否か?今論文のプロジェクトを構築するには?私がproject2で "make"を呼び出すと、project1の "make"を呼び出さなければなりませんか?2つのプロジェクトをC++でリンクする方法

ありがとうございました!

答えて

0

私はあなたが望むものはメイクファイルの依存関係だと思いますか? makefile2で

all: 
    gcc my_file.c -o libMyLib.a 

:makefile1で

:たとえば、あなたのprojekt1(my_file.c)に機能を変更し、あなたのProject2にmakeを呼び出すと

all: my_file.c 
    gcc main2.c -o MyProg.exe 

それは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 
0

プロジェクトの両方が "バイナリ" ですか?または "静的"/"動的"ライブラリ? 2つのプロジェクトがバイナリである場合、2つの「メイン」関数が定義されているため、リンクできません。

両方のプロジェクトが関数定義のみの場合は、それらを共有ライブラリとして作成し、それらの共有ライブラリを使用して新しいバイナリを作成します。

+0

プロジェクトには2つのメイン(お互いに1つ)がありますが、メイン関数なしで2番目のプロジェクトからのみ関数を呼び出したいとします。 – Christ

関連する問題