如何在CMake项目中向GCC添加全局文件扩展名(* .pde),就像C ++代码一样

dgr*_*rat 5 gcc cmake

我有一个非常简单的CMake脚本。不幸的是,该项目使用的是* .pde文件,它是纯C ++或C代码。

CMake正在处理任何以文件结尾的文件,但是我收到了编译器错误,因为GCC不知道如何处理它。如何为GCC添加全局文件扩展名,以便将* .pde文件编译为通常的* .cpp文件?

-x c++ foo.pde如果我想使用控制台,该命令很好,但对于CMake,(我认为)不适用。

cmake_minimum_required(VERSION 2.8)
project(RPiCopter)

SET( RPiCopter
  absdevice
  containers
  device
  exceptions
  navigation
  frame
  vehicle
  receiver
  scheduler
  tinycopter.pde
)

message( STATUS "Include ArduPilot library directories" )
foreach( DIR ${AP_List} ${AP_List_Linux} ${AP_Headers} )
  include_directories( "../libraries/${DIR}" )
endforeach()
include_directories( zserge-jsmn )

# ***************************************
# Build the firmware
# ***************************************
add_subdirectory ( zserge-jsmn )

#set(CMAKE_CXX_FLAGS "-x c++ *.pde")
ADD_EXECUTABLE ( RPiCopter ${RPiCopter} )
target_link_libraries ( RPiCopter -Wl,--start-group ${AP_List} ${AP_List_Linux} jsmn -Wl,--end-group )
Run Code Online (Sandbox Code Playgroud)

Fra*_*ser 5

您应该能够set_source_files_propertiesLANGUAGE属性一起使用,将文件标记为C ++源:

set_source_files_properties(${TheFiles} PROPERTIES LANGUAGE CXX)
Run Code Online (Sandbox Code Playgroud)

正如@steveire在他自己的答案中指出的那样,此错误将需要以下解决方法:

set_source_files_properties(${TheFiles} PROPERTIES LANGUAGE CXX)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  add_definitions("-x c++")
endif()
Run Code Online (Sandbox Code Playgroud)

  • 调用set_source_file_properties()是IMO正确的方法,但是我将全局调用add_definitions()替换为set_source_properties($ {TheFiles} PROPERTIES COMPILE_FLAGS“ -x c ++”)以将定义限制为那些文件 (2认同)