I succeded, with some help, at compiling and running a MPI program from commandline on windows. Now I'm trying to compile this program with my IDE code::blocks and it fails.
在一些帮助下,我在windows上从命令行编译和运行了一个MPI程序。现在我尝试用我的IDE代码来编译这个程序::block,它失败了。
Under Settings -> Compiler... -> Other Settings -> Advanced Options -> Command line macros
I removed all the unnecessary flags and simly left:
在设置- >编译器……>其他设置->高级选项->命令行宏我删除了所有不必要的标志,simly离开:
$compiler $file
编译器文件美元
Settings -> Compiler... -> Toolchain executables
I simly have the MPI wrapper mpicc.exe
for C prgrams and mpic++.exe
for C++.
设置- >编译器……->工具链可执行文件,我simly有MPI包装的mpicc。exe为C prg和mpic++。exe c++。
When I now click on Build
(Ctrl +F9) a small popup window opens stating:
当我现在点击Build (Ctrl +F9)一个小弹出窗口打开说明:
cl.exe - application error
cl。exe -应用程序错误
the error code is 0xc00000be
错误代码是0xc00000be。
in the build log window of code::blocks I get:
在代码的构建日志窗口中::
mpicc.exe C:\Entwicklung\src\mpi_prime.c Skipping linking (no linker program set): C:\Entwicklung\src\mpi_prime.exe Process terminated with status -1073741634 (1 minutes, 37 seconds) 0 errors, 0 warnings (1 minutes, 37 seconds)
And here I'm stuck again, left with a few questions?
这里我又卡住了,留下几个问题?
- should I keep the mpicc.exe wrapper?
- 我应该保留mpicc吗?exe包装吗?
- code::blocks tries always to invoke a linker etc. where can I turn that off?
- 代码::块尝试总是调用链接器等等,我可以把它关掉吗?
- I wanted to change my compiler from cl to gcc from the start, should I try that first?
- 我想从一开始就把我的编译器从cl改为gcc,我应该先试试吗?
EDIT 1:
编辑1:
mpicc.exe /nologo /W3 /MD /Ox /DNDEBUG /IC:\Entwicklung\CUDA\VS2012~1\VC\include /IC:\Entwicklung\CUDA\VS2012~1\VC\include /c main.c /Foobj\Release\main.obj link.exe /nologo /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /out:bin\Release\mpi_test_projektarbeit.exe "..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" msvcrt.lib msvcprt.lib "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" obj\Release\main.obj Process terminated with status -1073741634 (0 minutes, 1 seconds) 0 errors, 0 warnings (0 minutes, 1 seconds)
I believe I did set up everything as it should be, however I still get the popup with the error code. I will fiddle with it. If nothing works, I'll try reinstalling code::blocks maybe this will help.
我相信我确实设置了所有的东西,但是我仍然得到了错误代码的弹出框。我会摆弄它。如果没有效果,我会试着重新安装代码::块可能会有帮助。
EDIT 2:
编辑2:
First, it's still not running. Second, I believe I have a much better understanding now whats going on and whats wrong.
首先,它仍然没有运行。第二,我相信我现在能更好地理解到底是怎么回事,什么是错的。
By trying out diffrent things, I tried using cl.exe directly without the mpicc.exe wrapper. I chose Settings -> Compiler... -> Microsoft Visual C++ 2010
, codeblocks was offering me. Trying to build project I received exactly the same error message (had to discipline my noScript to show me the message) as with mpicc.exe
. mpicc.exe invokes cl.exe in its mpicc-wrapper-data.txt
manifesto.
通过尝试不同的东西,我试着用cl。没有mpicc直接exe。exe包装。我选择了设置->编译器…->微软Visual c++ 2010, codeblocks提供给我。尝试构建项目时,我收到了与mpicc.exe相同的错误消息(必须约束我的noScript以显示消息)。mpicc。exe调用cl。exe mpicc-wrapper-data。txt宣言。
So with some google magic, I found at the codeblocks forum this page, where someone else had exactly the same error message. Their suggestion was to add the additional environment PATHs, which made me think. Before I ran mpicc
from command line I had to run vcvarsall.bat
first because I got an error that mspdb110.dll
was missing. So I took a closer look at vcvarsall.bat
which was invoking another batch-file vcvars32.bat
. That file temporarily added PATH variables. So I added
我在codeblocks论坛上发现了一些谷歌的魔法,在这个页面上,其他人也有同样的错误信息。他们的建议是增加额外的环境路径,这让我思考。在我从命令行运行mpicc之前,我必须运行vcvarsall。首先,因为我有一个错误,mspdb110。dll失踪了。所以我仔细观察了vcvarsall。bat正在调用另一个批处理文件vcvars32.bat。该文件临时添加路径变量。所以我添加了
C:\Entwicklung\CUDA\VS 2012\Common7\IDE\
VS 2012 C:\ Entwicklung \ CUDA \ \ Common7 \ IDE \
permanently to my PATH, and mpicc.exe
can be invoked without any missing DLL error message, but trying to compile, shows up with some linker error unable to find advapi32.lib
. I will look into it deeper and as soon as it runs on commandline without the help of vcvars32.bat
I'll try it from CB again. I hope this is causing all my problems.
永久地走在我的道路上,还有mpicc。可以调用exe,而不需要任何缺失的DLL错误消息,但是尝试编译时,会出现一些链接错误,无法找到advapi32.lib。在没有vcvars32的帮助下,我将深入研究它,并尽快在命令行上运行。我再试一下CB。我希望这能引起我所有的问题。
There is still one other thing confusing me a little bit, nothing serious but when I uninstalled CB and installed it again, CB had may "new" mpi
compiler setup somewhere saved. I checked my installation folder: all files were deleted after uninstalling it, so I also deleted the CB folder under USER\AppData\
. However installing CB anew, the compiler settings where still present at CB startup, asking me if I wanted to import them?!?
还有一件事让我有点困惑,没有什么严重的,但是当我卸载CB并再次安装它时,CB有可能“新的”mpi编译器安装在某处保存。我检查了我的安装文件夹:所有文件在卸载后都被删除了,所以我也删除了用户\AppData\下面的CB文件夹。但是重新安装CB,编译器设置在CB启动时仍然存在,问我是否想导入它们?!?
1 个解决方案
#1
2
This will get you as far as building a 32-bit "Hello world" console project in Code::Blocks (12.11, at least) using the OpenMPI windows C compiler wrapper mpicc.exe
, with the MS Visual Studio 10 toolchain (or later) installed:
这将使您在代码中构建一个32位的“Hello world”控制台项目::使用OpenMPI windows C编译器包装器mpicc(至少是12.11)。exe,与MS Visual Studio 10工具链(或稍后)安装:
I presume:
我想:
-
Code::Blocks has detected the MS VC++10 compiler and it is listed as an available compiler in Settings -> Compiler under the drop-down menu Selected Compiler
代码::块已经检测到MS vc++ 10编译器,它被列出为下拉菜单下选择编译器下的>编译器中的可用编译器。
-
You have configured a new compiler, let's say, mpi, for the MPI wrapper, and that is the one in which you have changed the advanced compiler settings and other things.
您已经配置了一个新的编译器,比如mpi,对于mpi包装器,这是您更改了高级编译器设置和其他东西的那个。
-
You have OpenMPI installed in
C:\Program Files (x86)\OpenMPI_v1.6.2-win32
你有OpenMPI安装在C:\Program Files (x86)\ OpenMPI_v1.6.2-win32
Then:
然后:
-
For a native
win32
build you will need to linkkernel32.lib
, and for that you will need to an up-to-date Windows SDK, e.g. http://msdn.microsoft.com/en-US/windows/desktop/bg162891对于本机win32构建,您需要链接kernel32。lib,你需要一个最新的Windows SDK,例如http://msdn.microsoft.com/en-US/windows/desktop/bg162891。
-
In the Code::Blocks IDE, Navigate Settings -> Compiler. Select mpi and delete that compiler. (We'll start again)
在代码::块IDE,导航设置->编译器。选择mpi并删除该编译器。(我们将重新开始)
-
From the drop-down menu select Microsoft Visual Studio 2010; click Copy and call the new compiler again mpi.
从下拉菜单中选择Microsoft Visual Studio 2010;单击Copy并再次调用新的编译器mpi。
-
In the tab-menu, tab to Toolchain executables and set:
在列表菜单中,选项卡到工具链可执行文件和设置:
-
Compiler's installation directory =
<empty>
-
编译器的安装目录=
。 - C compiler = "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- C编译器= "C:\程序文件(x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- C++ compiler = "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- c++编译器= "C:\程序文件(x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- Leave the other settings in Toolchain executables as they are and OK.
- 将其他设置保留在工具链可执行文件中。
-
Compiler's installation directory =
-
The compiler will need access to Standard C Library headers (at least) and will need space-free (DOS) search pathnames. So now tab to Search Directories -> Compiler, where you will see
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
.编译器需要访问标准的C库头(至少),并且需要空的(DOS)搜索路径名。现在标签搜索目录- >编译器,在那里你可以看到C:\Program Files (x86)\Microsoft Visual Studio 10.0 \ VC \包括。
-
Select this path; click Edit and replace it with the DOS version of same,
C:\PROGRA~2\MICROS~1.0\VC\include
.选择这条路;点击编辑并将其替换为DOS版本,C:\程序~2\MICROS~1.0\VC\包括。
-
OK out of Compiler settings.
在编译器设置中。
Next set up the project.
接下来的项目。
-
Navigate File -> New -> Project. Click the Console Application icon
导航文件->新>项目。单击控制台应用程序图标。
-
Click through the wizard:
点击向导:
-
Set language = C
设置语言= C
-
Choose a project name and location
选择项目名称和位置。
-
Set Compiler = mpi
设置编译器= mpi
-
Finish
完成
-
Code::Blocks will then pop up a warning saying Can't find compiler executable in your configured search paths for mpi (and will do likewise whenever your visit the project's build options). This is a false alarm.
代码::块会弹出一个警告,说在mpi的配置搜索路径中找不到编译器可执行文件(当您访问项目的构建选项时,也会这样做)。这是虚惊一场。
-
Locate
kernel32.lib
under your SDK installation and get its pathname, say:"C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib"
定位kernel32。在您的SDK安装下,并获得它的路径名,说:“C:\程序文件(x86)\Windows工具包\ \ \ \ \ \x86\ \ \x86\kernel32.lib”
-
Navigate Settings -> Project -> Build options and select Compiler = mpi
导航设置->项目->构建选项和选择编译器= mpi。
-
In the tab-menu, tab to Linker settings
在列表菜单中,选项卡到链接器设置。
-
Click Add beneath the Link libraries list. Add the full, quoted pathname you have noted for
kernel32.lib
and OK out of Build options.单击链接库列表下面的Add。添加完整的,引用的路径名,您已经注意到kernel32。lib和OK之外的构建选项。
-
Build the project. A successful build log should look like:
构建项目。一个成功的构建日志应该是这样的:
-------------- Build: Debug in mpi_test (compiler: mpi)--------------- "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe" /nologo /W3 /MDd /Zi /D_DEBUG /IC:\PROGRA~2\MICROS~1.0\VC\include /c main.c /Foobj\Debug\main.obj main.c link.exe /nologo /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib" /out:bin\Debug\mpi_test.exe msvcrtd.lib msvcprtd.lib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" obj\Debug\main.obj /DEBUG LINK : bin\Debug\mpi_test.exe not found or not built by the last incremental link; performing full link Output size is 17.50 KB Process terminated with status 0 (0 minutes, 0 seconds) 0 errors, 0 warnings (0 minutes, 0 seconds)
From there you can move on to some real MPI project, for which of course you will need to configure additional search directories and linkage options.
从那里,您可以转到一些真正的MPI项目,您当然需要配置额外的搜索目录和链接选项。
UPDATE 1:
更新1:
Some problems I see with your latest failing build log:
您最近失败的构建日志中看到的一些问题:
-
The compiler is being invoked as
mpicc.exe
, but per my answer it should be invoked by its full pathname, e.g."C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
. Can you attach a screenshot of the toolchain executables tab?编译器被调用为mpicc。exe,但是根据我的回答,应该用它的完整路径名来调用它。“C:\ Program Files \ OpenMPI_v1.6.2-win32 \ bin \ mpicc.exe(x86)”。你能在工具链执行表上附加一个屏幕截图吗?
-
The compiler option
/IC:\Entwicklung\CUDA\VS2012~1\VC\include
appears twice. This suggests you have configured this option globally for thempi
compiler and also for the project. Just configure it for the project.编译器选项/IC:\Entwicklung\CUDA\VS2012~1\VC\包括出现两次。这表明您已经为mpi编译器和项目配置了这个全局选项。只需为项目配置它。
-
The linker option
/LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include
also appears twice, probably for the same reason. But/LIBPATH:
should point to a directory containing library binaries (.lib
) and you are pointing it at the same place as yourCUDA
header files -/IC:\Entwicklung\CUDA\VS2012~1\VC\include
linker选项/LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\也会出现两次,可能是出于同样的原因。但是/LIBPATH:应该指向包含库二进制文件的目录(.lib),并且将其指向与您的CUDA头文件- /IC:\Entwicklung\CUDA\VS2012~1\VC\包括的相同位置。
-
The
kernel32.lib
is in the linkage twice, first with a relative path"..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"
, which may be invalid, and later with the absolute path"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"
. Again this probably results from combining redundant or incorrect global compiler configuration with project configuration.kernel32。lib在连杆中两次,首先是相对路径。\程序文件(x86)\微软sdk \ Windows \ v7.1A \ Lib \ Kernel32。可能是无效的,然后是绝对路径“C:\程序文件(x86)\ microsoftsdks \v7.1A\Lib\Kernel32.Lib”。同样,这可能是由于将冗余或不正确的全局编译器配置与项目配置组合在一起造成的。
Would urge you to get the mpi compiler working for the default "Hello World" console app by the steps I've given then move up to an elementary MPI app and get it working, confining the additional configuration that you will require to the project rather than the compiler
如果你想让mpi编译器为默认的“Hello World”控制台应用程序工作,那么我的步骤就是移动到一个基本的mpi应用程序,让它工作,限制你对项目需要的额外配置,而不是编译器?
#1
2
This will get you as far as building a 32-bit "Hello world" console project in Code::Blocks (12.11, at least) using the OpenMPI windows C compiler wrapper mpicc.exe
, with the MS Visual Studio 10 toolchain (or later) installed:
这将使您在代码中构建一个32位的“Hello world”控制台项目::使用OpenMPI windows C编译器包装器mpicc(至少是12.11)。exe,与MS Visual Studio 10工具链(或稍后)安装:
I presume:
我想:
-
Code::Blocks has detected the MS VC++10 compiler and it is listed as an available compiler in Settings -> Compiler under the drop-down menu Selected Compiler
代码::块已经检测到MS vc++ 10编译器,它被列出为下拉菜单下选择编译器下的>编译器中的可用编译器。
-
You have configured a new compiler, let's say, mpi, for the MPI wrapper, and that is the one in which you have changed the advanced compiler settings and other things.
您已经配置了一个新的编译器,比如mpi,对于mpi包装器,这是您更改了高级编译器设置和其他东西的那个。
-
You have OpenMPI installed in
C:\Program Files (x86)\OpenMPI_v1.6.2-win32
你有OpenMPI安装在C:\Program Files (x86)\ OpenMPI_v1.6.2-win32
Then:
然后:
-
For a native
win32
build you will need to linkkernel32.lib
, and for that you will need to an up-to-date Windows SDK, e.g. http://msdn.microsoft.com/en-US/windows/desktop/bg162891对于本机win32构建,您需要链接kernel32。lib,你需要一个最新的Windows SDK,例如http://msdn.microsoft.com/en-US/windows/desktop/bg162891。
-
In the Code::Blocks IDE, Navigate Settings -> Compiler. Select mpi and delete that compiler. (We'll start again)
在代码::块IDE,导航设置->编译器。选择mpi并删除该编译器。(我们将重新开始)
-
From the drop-down menu select Microsoft Visual Studio 2010; click Copy and call the new compiler again mpi.
从下拉菜单中选择Microsoft Visual Studio 2010;单击Copy并再次调用新的编译器mpi。
-
In the tab-menu, tab to Toolchain executables and set:
在列表菜单中,选项卡到工具链可执行文件和设置:
-
Compiler's installation directory =
<empty>
-
编译器的安装目录=
。 - C compiler = "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- C编译器= "C:\程序文件(x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- C++ compiler = "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- c++编译器= "C:\程序文件(x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
- Leave the other settings in Toolchain executables as they are and OK.
- 将其他设置保留在工具链可执行文件中。
-
Compiler's installation directory =
-
The compiler will need access to Standard C Library headers (at least) and will need space-free (DOS) search pathnames. So now tab to Search Directories -> Compiler, where you will see
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
.编译器需要访问标准的C库头(至少),并且需要空的(DOS)搜索路径名。现在标签搜索目录- >编译器,在那里你可以看到C:\Program Files (x86)\Microsoft Visual Studio 10.0 \ VC \包括。
-
Select this path; click Edit and replace it with the DOS version of same,
C:\PROGRA~2\MICROS~1.0\VC\include
.选择这条路;点击编辑并将其替换为DOS版本,C:\程序~2\MICROS~1.0\VC\包括。
-
OK out of Compiler settings.
在编译器设置中。
Next set up the project.
接下来的项目。
-
Navigate File -> New -> Project. Click the Console Application icon
导航文件->新>项目。单击控制台应用程序图标。
-
Click through the wizard:
点击向导:
-
Set language = C
设置语言= C
-
Choose a project name and location
选择项目名称和位置。
-
Set Compiler = mpi
设置编译器= mpi
-
Finish
完成
-
Code::Blocks will then pop up a warning saying Can't find compiler executable in your configured search paths for mpi (and will do likewise whenever your visit the project's build options). This is a false alarm.
代码::块会弹出一个警告,说在mpi的配置搜索路径中找不到编译器可执行文件(当您访问项目的构建选项时,也会这样做)。这是虚惊一场。
-
Locate
kernel32.lib
under your SDK installation and get its pathname, say:"C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib"
定位kernel32。在您的SDK安装下,并获得它的路径名,说:“C:\程序文件(x86)\Windows工具包\ \ \ \ \ \x86\ \ \x86\kernel32.lib”
-
Navigate Settings -> Project -> Build options and select Compiler = mpi
导航设置->项目->构建选项和选择编译器= mpi。
-
In the tab-menu, tab to Linker settings
在列表菜单中,选项卡到链接器设置。
-
Click Add beneath the Link libraries list. Add the full, quoted pathname you have noted for
kernel32.lib
and OK out of Build options.单击链接库列表下面的Add。添加完整的,引用的路径名,您已经注意到kernel32。lib和OK之外的构建选项。
-
Build the project. A successful build log should look like:
构建项目。一个成功的构建日志应该是这样的:
-------------- Build: Debug in mpi_test (compiler: mpi)--------------- "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe" /nologo /W3 /MDd /Zi /D_DEBUG /IC:\PROGRA~2\MICROS~1.0\VC\include /c main.c /Foobj\Debug\main.obj main.c link.exe /nologo /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib" /out:bin\Debug\mpi_test.exe msvcrtd.lib msvcprtd.lib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" obj\Debug\main.obj /DEBUG LINK : bin\Debug\mpi_test.exe not found or not built by the last incremental link; performing full link Output size is 17.50 KB Process terminated with status 0 (0 minutes, 0 seconds) 0 errors, 0 warnings (0 minutes, 0 seconds)
From there you can move on to some real MPI project, for which of course you will need to configure additional search directories and linkage options.
从那里,您可以转到一些真正的MPI项目,您当然需要配置额外的搜索目录和链接选项。
UPDATE 1:
更新1:
Some problems I see with your latest failing build log:
您最近失败的构建日志中看到的一些问题:
-
The compiler is being invoked as
mpicc.exe
, but per my answer it should be invoked by its full pathname, e.g."C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"
. Can you attach a screenshot of the toolchain executables tab?编译器被调用为mpicc。exe,但是根据我的回答,应该用它的完整路径名来调用它。“C:\ Program Files \ OpenMPI_v1.6.2-win32 \ bin \ mpicc.exe(x86)”。你能在工具链执行表上附加一个屏幕截图吗?
-
The compiler option
/IC:\Entwicklung\CUDA\VS2012~1\VC\include
appears twice. This suggests you have configured this option globally for thempi
compiler and also for the project. Just configure it for the project.编译器选项/IC:\Entwicklung\CUDA\VS2012~1\VC\包括出现两次。这表明您已经为mpi编译器和项目配置了这个全局选项。只需为项目配置它。
-
The linker option
/LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include
also appears twice, probably for the same reason. But/LIBPATH:
should point to a directory containing library binaries (.lib
) and you are pointing it at the same place as yourCUDA
header files -/IC:\Entwicklung\CUDA\VS2012~1\VC\include
linker选项/LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\也会出现两次,可能是出于同样的原因。但是/LIBPATH:应该指向包含库二进制文件的目录(.lib),并且将其指向与您的CUDA头文件- /IC:\Entwicklung\CUDA\VS2012~1\VC\包括的相同位置。
-
The
kernel32.lib
is in the linkage twice, first with a relative path"..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"
, which may be invalid, and later with the absolute path"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"
. Again this probably results from combining redundant or incorrect global compiler configuration with project configuration.kernel32。lib在连杆中两次,首先是相对路径。\程序文件(x86)\微软sdk \ Windows \ v7.1A \ Lib \ Kernel32。可能是无效的,然后是绝对路径“C:\程序文件(x86)\ microsoftsdks \v7.1A\Lib\Kernel32.Lib”。同样,这可能是由于将冗余或不正确的全局编译器配置与项目配置组合在一起造成的。
Would urge you to get the mpi compiler working for the default "Hello World" console app by the steps I've given then move up to an elementary MPI app and get it working, confining the additional configuration that you will require to the project rather than the compiler
如果你想让mpi编译器为默认的“Hello World”控制台应用程序工作,那么我的步骤就是移动到一个基本的mpi应用程序,让它工作,限制你对项目需要的额外配置,而不是编译器?