CMake混合編譯C/C++與object-C

        在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

以上,進行編譯,就可以成功生產可執行文件。

發佈了58 篇原創文章 · 獲贊 83 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章