diff options
author | Brad King <brad.king@kitware.com> | 2020-05-13 11:42:28 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-05-13 11:42:52 (GMT) |
commit | 3bb261b0fedfb2b0e45a5eabc136ff1faea1b914 (patch) | |
tree | 441a6fb5e81366b8ec2ca5970a7d349b6070f666 | |
parent | 7c4f609eedfec698512926aa99a829e5734c9096 (diff) | |
parent | fe19df49d48680cbfd8e1023d4a93b39f12d4b64 (diff) | |
download | CMake-3bb261b0fedfb2b0e45a5eabc136ff1faea1b914.zip CMake-3bb261b0fedfb2b0e45a5eabc136ff1faea1b914.tar.gz CMake-3bb261b0fedfb2b0e45a5eabc136ff1faea1b914.tar.bz2 |
Merge topic 'conditional-CMAKE_EXPORT_COMPILE_COMMANDS'
fe19df49d4 Initialize CMAKE_EXPORT_COMPILE_COMMANDS only if not set already
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4738
8 files changed, 18 insertions, 7 deletions
diff --git a/Modules/CMakeGenericSystem.cmake b/Modules/CMakeGenericSystem.cmake index f539b46..000fba1 100644 --- a/Modules/CMakeGenericSystem.cmake +++ b/Modules/CMakeGenericSystem.cmake @@ -50,15 +50,9 @@ if(CMAKE_GENERATOR MATCHES "Make") if(DEFINED CMAKE_TARGET_MESSAGES) set_property(GLOBAL PROPERTY TARGET_MESSAGES ${CMAKE_TARGET_MESSAGES}) endif() - if(CMAKE_GENERATOR MATCHES "Unix Makefiles") - set(CMAKE_EXPORT_COMPILE_COMMANDS "$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" - CACHE BOOL "Enable/Disable output of compile commands during generation." - ) - mark_as_advanced(CMAKE_EXPORT_COMPILE_COMMANDS) - endif() endif() -if(CMAKE_GENERATOR MATCHES "Ninja") +if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS AND CMAKE_GENERATOR MATCHES "Ninja|Unix Makefiles") set(CMAKE_EXPORT_COMPILE_COMMANDS "$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" CACHE BOOL "Enable/Disable output of compile commands during generation." ) diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index cc88868..8aeb412 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -197,6 +197,9 @@ endif() add_RunCMake_test(CompilerNotFound) add_RunCMake_test(Configure -DMSVC_IDE=${MSVC_IDE}) add_RunCMake_test(DisallowedCommands) +if("${CMAKE_GENERATOR}" MATCHES "Unix Makefiles|Ninja") + add_RunCMake_test(ExportCompileCommands) +endif() add_RunCMake_test(ExternalData) add_RunCMake_test(FeatureSummary) add_RunCMake_test(FPHSA) diff --git a/Tests/RunCMake/ExportCompileCommands/BeforeProject-check.cmake b/Tests/RunCMake/ExportCompileCommands/BeforeProject-check.cmake new file mode 100644 index 0000000..87058e2 --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/BeforeProject-check.cmake @@ -0,0 +1,4 @@ +if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/compile_commands.json") + set(RunCMake_TEST_FAILED "compile_commands.json not generated") + return() +endif() diff --git a/Tests/RunCMake/ExportCompileCommands/BeforeProject.cmake b/Tests/RunCMake/ExportCompileCommands/BeforeProject.cmake new file mode 100644 index 0000000..b8cbdef --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/BeforeProject.cmake @@ -0,0 +1,3 @@ +enable_language(C) +add_library(empty STATIC empty.c) +message(STATUS "CMAKE_EXPORT_COMPILE_COMMANDS='${CMAKE_EXPORT_COMPILE_COMMANDS}'") diff --git a/Tests/RunCMake/ExportCompileCommands/BeforeProjectBEFORE.cmake b/Tests/RunCMake/ExportCompileCommands/BeforeProjectBEFORE.cmake new file mode 100644 index 0000000..87f9c87 --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/BeforeProjectBEFORE.cmake @@ -0,0 +1 @@ +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/Tests/RunCMake/ExportCompileCommands/CMakeLists.txt b/Tests/RunCMake/ExportCompileCommands/CMakeLists.txt new file mode 100644 index 0000000..b7117bd --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.17) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/ExportCompileCommands/RunCMakeTest.cmake b/Tests/RunCMake/ExportCompileCommands/RunCMakeTest.cmake new file mode 100644 index 0000000..b540a04 --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake_with_options(BeforeProject -DCMAKE_PROJECT_INCLUDE_BEFORE=BeforeProjectBEFORE.cmake) diff --git a/Tests/RunCMake/ExportCompileCommands/empty.c b/Tests/RunCMake/ExportCompileCommands/empty.c new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/ExportCompileCommands/empty.c |