我不熟悉Xcode,Makefile和一般编程。
我已经获得了可以使用Makefile构建的现有C ++代码。使用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
...
其中myproj
是生成的可执行文件。
我想使用Xcode 11的调试功能(或任何现代的IDE-参见下面的[[ALTERNATIVELY])来探索和学习我想使用的代码。在these instructions之后,我创建了一个命令行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
这很奇怪,因为我的Makefile可以正常工作,并且在命令行上我的系统可以找到编译器:
>$ whereis gcc /usr/bin/gcc
有人可以解释为什么Xcode找不到编译器,以及我怎么解决? (有关使用Xcode欺骗旨在使用Makefile构建的代码的任何提示/警告,将不胜感激!)我不喜欢使用Xcode的想法,我只是认为在Mac上工作会很自然。如果还有另一个具有良好调试器的IDE,它更适合使用Makefile构建命令行可执行文件,请告诉我!交替地
PATH
设置几个位置,并在创建新的外部构建目标时勾选see also here复选框。供以后参考,这是我使用的完整过程。回想一下我的问题是我想-将gnu Makefile项目导入Xcode 11-该项目是一组源文件和一个Makefile,它们生成了要在命令行上运行的程序,-源文件(因此包括Makefile)取决于需要在Xcode中设置的PATH
中找到的库(在我的情况下,我已经通过MacPorts安装了库)。
Pass build settings in environment
。 PATH
,产品名称等和语言。输入您的项目位置。 File > New > New Project
创建一个新目标,然后单击macOS > Command Line Tool
。为新目标选择一个(产品)名称,然后选择构建工具(我的名称为File > New > Target...
)。 Cross-platform > External Build System
选项卡中,选择Makefile所在的/将位于的/usr/bin/make
。 Info > External Build Tool Configuration
复选框。 Directory
选项卡,单击Pass build settings in environment
,在外部库中设置正确的PATH
,然后在第一列中添加Build Settings > All
,然后在第二列中将所需的路径添加到库中(在我的情况下+ > Add User-Defined Setting
将路径附加到我随MacPorts安装的库中。 PATH
或${PATH}:/opt/local/bin:/opt/local/sbin
。然后在Edit scheme...
下添加Product > Scheme > Edit scheme...
,如步骤6所示。Run > Arguments > Environment Variables
复选框。 PATH
标志以启用调试。 Add to target
进行构建。-g
来告诉Xcode可执行文件在哪里(按照步骤7),然后选择Cmd+B
,导航到项目文件夹,然后选择在步骤11中构建的命令行可执行文件。Edit scheme...
运行。