jms*_*547 0 ide xcode gcc makefile
我对 Xcode、Makefile 和一般编程都很陌生。
我已经获得了一个可用的现有 C++ 代码,该代码是使用 Makefile 构建的。使用 Makefile,我可以在 Mac (MacOS 10.14.6) 上构建并运行可执行文件,没有任何问题。
Makefile 的开头是
CC = g++-mp-9 -Wall -O2 -std=c++14 -fopenmp
DEBUG =
CFLAGS = -c $(DEBUG) -I/opt/local/include
LFLAGS = $(DEBUG) -L/opt/local/lib -framework Accelerate -march=native -lfftw3 -lfftw3_threads -lopenblas -lm -lpthread -larmadillo
myproj: $(OBJS)
$(CC) -o myproj $(OBJS) $(LFLAGS)
main.o: main.cpp const.h functions.h
$(CC) $(CFLAGS) main.cpp
...
Run Code Online (Sandbox Code Playgroud)
myproj生成的可执行文件在哪里。
我想使用 Xcode 11(或任何现代 IDE - 请参见下文)的调试功能来探索和学习我想要使用的代码。按照这些说明,我创建了一个命令行 Xcode 项目并设置了一个外部构建目标。
但是,当我尝试在 Xcode 中构建它时,出现以下错误
g++-mp-9 -Wall -O2 -std=c++14 -fopenmp -c -I/opt/local/include main.cpp
make: g++-mp-9: No such file or directory
make: *** [main.o] Error 1
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我的 Makefile 工作得很好,并且在命令行上我的系统可以找到编译器:
>$ whereis gcc
/usr/bin/gcc
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么 Xcode 找不到编译器,以及我如何修复它吗?(此外,任何关于使用 Xcode 来理解旨在使用 Makefile 构建的代码的提示/警告将不胜感激!)
另外,
我并不执着于使用 Xcode,我只是认为这很自然,因为我在 Mac 上工作。如果有另一个具有良好调试器的 IDE 更适合使用 Makefile 构建命令行可执行文件,请告诉我!
PATH感谢 MadScientist 的帮助,我发现了环境变量没有从 bash 导入的问题(另请参阅此处)。通过反复试验,我发现我需要PATH在“构建设置”中设置正确的几个位置,并Pass build settings in environment在创建新的外部构建目标时勾选复选框。
为了供将来参考,这是我使用的完整过程。回想一下,我的问题是我想要
- 将 gnu Makefile 项目导入 Xcode 11,
- 该项目是一组源文件和一个生成在命令行上运行的程序的 Makefile,
- 源文件(以及 Makefile )依赖于PATH我需要在 Xcode 中设置的 a 中找到的库(在我的例子中,我通过 MacPorts 安装了这些库)。
File > New > New Project。 macOS > Command Line Tool、产品名称等和语言。输入您的项目位置。 File > New > Target...创建一个新目标,然后Cross-platform > External Build System. 为新目标选择(产品)名称,然后选择构建工具(我的是/usr/bin/make)。Info > External Build Tool Configuration卡中,选择Directory您的 makefile 所在/将在的位置。确保勾选该 Pass build settings in environment 复选框。 PATH通过转到该Build Settings > All选项卡,单击+ > Add User-Defined Setting,然后在第一列中添加PATH,然后在第二列中添加所需的库路径(在我的例子中,${PATH}:/opt/local/bin:/opt/local/sbin将路径附加到我通过 MacPorts 安装的库), 设置正确的外部库。Edit scheme...或Product > Scheme > Edit scheme...。然后在下面Run > Arguments > Environment Variables添加PATH步骤 6 中的内容。 Add to target复选框。-g设置了启用调试的标志。Cmd+B构建。Edit scheme...构建完成后,通过选择(按照步骤 7)告诉 Xcode 可执行文件的位置,然后Run > Info > Executable > Other...导航到项目文件夹,并选择在步骤 11 中构建的命令行可执行文件。 Cmd+R即可运行。也许某些步骤是不需要的,我不确定。我很乐意了解是否有更好的方法来做到这一点。
| 归档时间: |
|
| 查看次数: |
4892 次 |
| 最近记录: |