web-dev-qa-db-ja.com

CとC ++をCMAKEと混合する

アプリケーションは主にCで記述しますが、一部のサブモジュールはC++(Linuxの場合)で記述します。問題は、いくつかのサブディレクトリにCMakeLists.txtを使用し、別のサブディレクトリにgccを使用するためにg++ファイルを書き込む方法です。

22
Cartesius00

コンパイラとリンカは、特に設定されていない限り、通常、ファイル拡張子によって決定されます。ファイルの末尾に問題がない限り、コードはコンパイルされ、正しいコンパイラにリンクされます。

ちなみに、CとC++を混在させる場合は、正しいexternC宣言を行うことを忘れないでください。

21
Bort

CMakeはこれを自動的に行います。 CMakeLists.txtファイルで両方のタイプのファイルを自由に混在させることができます。

. . .
add_executable(
    my_program
    code.cpp
    more_code.c
)

私はいつもこれをします、そしてそれはうまくいきます。

10
Randall Cook

ソースファイルのLANGUAGEプロパティを「CXX」に設定できます。 ドキュメント を参照してください。

5
arrowd

G ++とgccの違いは、基本的にg ++が-lstdc ++をリンカーに渡すことです。 c ++モジュールの明示的な依存関係としてc ++標準ライブラリを追加するだけです。

明確にするために、gccはC++コードをコンパイルできます。 gccとg ++はこの点で同じです。違いは、g ++を使用する場合、libstdc ++にリンクするようにコンパイラーに明示的に指示する必要がないことだけです。

1
bames53