次の行がある場合。そして、私はTEST_OPTION
がデフォルトでON
に設定されることを期待しています。オプションのCMAKEのデフォルト値が機能しない
option(TEST_OPTION "A test option" ON)
私がテストすると、デフォルトではON
のようではありません。テストするために、私は簡単なアプリケーションのコンパイルしています:、私は$ cmake && cmake --build .
でコンパイルしようとした場合、私はコンパイルエラーが発生したことを期待する
cmake_minimum_required(VERSION 2.6)
project(test)
add_executable(test main.cpp)
option(TEST_OPTION "A test option" ON)
if(TEST_OPTION)
target_compile_definitions(test PRIVATE TEST_OPTION)
endif(TEST_OPTION)
:
int main() {
#ifdef TEST_OPTION
#error "TEST_OPTION encountered"
#endif
return 0;
}
を私はまた、単純なCMakeLists.txtを持っていますしかし私はしない! option(TEST_OPTION ...)
をset(TEST_OPTION ON)
に置き換えた場合、私は期待したコンパイルエラーが発生します。
なぜoption()
がデフォルトでこのオプションをデフォルト値に設定しないのか説明できますか?
あなたはテストコードが動作するはずです。空のビルドディレクトリから始めましたか? – Florian
うわー、そうですよ! CMakeCacheがリフレッシュされなかったということでした。私はCMakeキャッシュを削除する必要があり、その後、期待どおりにエラーが発生しました。 – Stewart