我正在处理包含以下语言*.c
,*.cpp
,*.m
,*.mm
的文件的项目。
为了向上面的每个类型提供正确的文件属性,我设置变量来存储每个文件类型的编译标志,并将每个文件应用于它的匹配标志:
set(CPP_FLAGS "-x c++ -arch x86_64 -fmessage-length=0 -std=c++11")
set(OBJCPP_FLAGS "-x objective-c++ -std=gnu++11 -stdlib=libc++ ")
set(OBJC_FLAGS "-x objective-c -fobjc-arc")
set(C_FLAGS "-x c -arch x86_64")
function(set_src_files_according_to_language in_source_files)
foreach(src_file ${in_source_files})
if(${src_file} MATCHES .cpp$)
set_source_files_properties(${src_file} PROPERTIES COMPILE_FLAGS "${CPP_FLAGS}")
elseif(${src_file} MATCHES ".mm$")
set_source_files_properties(${src_file} PROPERTIES COMPILE_FLAGS "${OBJCPP_FLAGS}")
elseif(${src_file} MATCHES ".m$")
set_source_files_properties(${SRC_FILE} PROPERTIES COMPILE_FLAGS "${OBJC_FLAGS}")
elseif(${src_file} MATCHES ".c$")
set_source_files_properties(${src_file} PROPERTIES COMPILE_FLAGS "${C_FLAGS}")
endif()
endforeach(SRC)
endfunction()
我想得到一些关于它是否是实现这一目标的正确方法的建议?
谢谢