CMake混合编译C/C++与object-C

来源:互联网 发布:大数据时代 调研报告 编辑:程序博客网 时间:2024/05/17 03:12
        在cmake混合编译C/C++和object-C时,设置编译选项可以通过add_compile_options或者通过set命令修改CMAKE_CXX_FLAGSCMAKE_C_FLAGS。 
        使用这两种方式在有的情况下效果是一样的(注意:有的情况下是一样的,不是所有情况下),他们的区别如下: 

   add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c++编译器)。

    set命令设置CMAKE_C_FLAGSCMAKE_CXX_FLAGS变量则只针对c和c++编译器的。

        因此,在编译C/C++与OC的混合程序中,设置  "-x objective-c++" 时,只能用add_compile_options进行添加编译选项,否则,C/C++在编译OC代码时就会报出莫名的错误。


所以,C/C++与OC混合编译时,CMakeLists.txt中应该如下写:

    add_compile_options(-x objective-c++)
    set(CMAKE_EXE_LINKER_FLAGS "-framework Cocoa -framework AppKit -framework CoreData -framework Foundation")

对应的g++命令行参数如下:

    g++ -x objective-c++ -framework Cocoa -framework AppKit -framework CoreData -framework Foundation

以上,进行编译,就可以成功生产可执行文件。

0 0
原创粉丝点击