0
私のcファイルをC++としてコンパイルする必要がある単体テストフレームワーク用のcatchを使用しています。メインプログラムを実行している場合しかし、私はそれは私がC++としてコンパイルされるべき特定のファイルを強制することができますが、その後、私は、メインプログラムをコンパイルすることができませんSET_SOURCE_FILES_PROPERTIESを使用してC.cmake mainプログラムをcとしてコンパイルし、単体テストをC++としてコンパイルします
cmake_minimum_required(VERSION 3.8)
project(maintenance)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
set(CMAKE_C_STANDARD 99)
set(SOURCE_FILES main.c maintenance.c)
add_executable(maintenance ${SOURCE_FILES})
set(MY_TEST_SOURCES maintenance.c maintenance_test.cpp)
SET_SOURCE_FILES_PROPERTIES(maintenance.c PROPERTIES LANGUAGE CXX)
add_executable(maintenance_test ${MY_TEST_SOURCES})
としてコンパイルすることにしたいです。この行をコメントアウトすると、メインプログラムはコンパイルできますが、単体テストはコンパイルできません。
メインプログラムをcとして、そしてテストソースをC++としてコンパイルするにはどうしたらよいですか?これを行うには
私の視点からは、元のプログラムは「C」であることを有するが、「C++」は少しローミングサービスを持っているとして、それをテストします。テストシステムによって例外がスローされることが予想される場合、 'maintenance.c'を" C "としてコンパイルするだけで十分です。プログラム自体が例外をスローする(直接的にまたは "C++"関数を呼び出すことによって)場合、 'maintenance.c'はプロダクションであっても" C++ "としてコンパイルする必要があります。 – Tsyvarev
テストフレームワーク "catch"では、cファイルをC++としてコンパイルする必要があります。私の特定のケースのコードは、cでコンパイルする必要があります。 – George
@George:CファイルをC++として実際にコンパイルする必要はありません。たぶん、C言語でコードをコンパイルすると、何が間違っているのかをもう少し説明できますか? –