diff --git a/cmake/modules/AddIPOptFlags.cmake b/cmake/modules/AddIPOptFlags.cmake
index 409279c3a04910677d2cf933a802a0d437d5fab2..1db2f1f14207ecf5e489ecb7b41ed76872e8acb9 100644
--- a/cmake/modules/AddIPOptFlags.cmake
+++ b/cmake/modules/AddIPOptFlags.cmake
@@ -2,7 +2,10 @@ function(add_dune_ipopt_flags _targets)
   if(IPOPT_FOUND)
     cmake_parse_arguments(ADD_DUNE_IPOPT_FLAGS "OBJECT" "" "" ${ARGN})
     foreach(_target ${_targets})
-      target_compile_options(${_target} PRIVATE ${DUNE_IPOPT_CFLAGS})
+      get_target_property(_props ${_target} COMPILE_FLAGS)
+      string(REPLACE "_props-NOTFOUND" "" _props "${_props}")
+      set_target_properties(${_target} PROPERTIES COMPILE_FLAGS
+          "${_props} ${DUNE_IPOPT_CFLAGS}")
       if(NOT ADD_DUNE_IPOPT_FLAGS_OBJECT)
         target_link_libraries(${_target} ${IPOPT_LIBRARY})
       endif()