在macOS中使用CMake进行多语言项目

时间:2018-01-24 12:36:45

标签: macos makefile compilation cmake

我正在处理包含以下语言*.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()

我想得到一些关于它是否是实现这一目标的正确方法的建议?

谢谢

0 个答案:

没有答案