我有许多使用CMake构建的项目,我希望能够轻松地在使用GCC或Clang/LLVM进行编译之间进行切换.我相信(请纠正我,如果我错了!)使用Clang我需要设置以下内容:
    SET (CMAKE_C_COMPILER             "/usr/bin/clang")
    SET (CMAKE_C_FLAGS                "-Wall -std=c99")
    SET (CMAKE_C_FLAGS_DEBUG          "-g")
    SET (CMAKE_C_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
    SET (CMAKE_C_FLAGS_RELEASE        "-O4 -DNDEBUG")
    SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
    SET (CMAKE_CXX_COMPILER             "/usr/bin/clang++")
    SET (CMAKE_CXX_FLAGS                "-Wall")
    SET (CMAKE_CXX_FLAGS_DEBUG          "-g")
    SET (CMAKE_CXX_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
    SET (CMAKE_CXX_FLAGS_RELEASE        "-O4 -DNDEBUG")
    SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
    SET (CMAKE_AR      "/usr/bin/llvm-ar")
    SET (CMAKE_LINKER  "/usr/bin/llvm-ld")
    SET (CMAKE_NM      "/usr/bin/llvm-nm")
    SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
    SET (CMAKE_RANLIB  "/usr/bin/llvm-ranlib")
是否有一种在这些和默认GCC变量之间切换的简单方法,最好是作为系统范围的变更而不是项目特定的(即不只是将它们添加到项目的CMakeLists.txt中)?
另外,llvm-*在使用clang而不是gcc编译时是否有必要使用程序而不是系统默认值?有什么不同?
我在终端上使用了gcc命令来编译C程序但突然间,在我的Mac操作系统更新后(到macOS 10.14 Mojave和XCode 10.0),我开始收到消息:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
         ^~~~~~~~~
compilation terminated.
我已经安装了gcc,因为我可以找到它/usr/local/bin并且那里确实有一个gcc.我尝试在我的其他iMac上运行相同的文件,它没有任何问题.
我试过运行xcode-select --install它已经安装好了,因此它没有解决我现在遇到的问题.我猜测路径搞砸了,因为gcc在我开始复制并粘贴其他资源中的一些命令来解决此问题后,它似乎无法找到.
希望对此有所帮助.
升级到Mojave后,还有一个问题不能在Mac上编译C程序,而该问题的答案已涵盖了发生问题的大多数变体。
现在-从2019年10月7日星期一开始-您可以升级到macOS Catalina 10.15。再次,在升级过程中/usr/include,即使在从Mojave 10.14.6升级到Catalina之前安装了XCode 11.0 ,该目录也被更新所破坏。因此,编译器期望没有/usr/include目录就不再起作用。
建议的解决Mojave问题的主要步骤-使用以下命令:
Run Code Online (Sandbox Code Playgroud)open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
由于目录/Library/Developer/CommandLineTools/Packages/不存在(因此尚无.pkg要打开的文件),因此无法正常工作。
有没有一种好的(官方)方法来创建和填充目录/usr/include?
我最近对Xcode 5中包含的新的clang编译器感到沮丧.我想知道在OS X上安装GNU GCC的最佳方法是什么.
需要考虑的事项:
编辑:成功!使用GCC 4.9.2(使用GMP 5.1.3,MPFR 3.1.2,MPC 1.0.2,ISL 0.12.2和CLooG 0.18.1),我成功构建了GCC.从这里获取的提示:
configure,CC=clang CXX=clang++所以GCC知道它不是由GCC编译的.make与-j8,或以其他方式构建需要大约4个小时!(-j8我的2012年中期MBP使用8GB RAM需要1 1/3小时.)(make -j8意味着make可以同时构建8个线程(4个核心+ HT),而在2核心机器上运行make -j4.)希望这可以帮助!