将英特尔编译器变量包含到CMake生成文件中 我使用Cuff2.2.6和最新的英特尔C++编译器,用于编译Linux、MaCOSX和Windows的程序。对于开发,我在Linux和MacOSX上使用Eclipse和CDT
直到最近,我才使用CMake创建我从控制台运行的常用Make文件。为了有一个工作环境,英特尔编译器附带了一个名为将英特尔编译器变量包含到CMake生成文件中 我使用Cuff2.2.6和最新的英特尔C++编译器,用于编译Linux、MaCOSX和Windows的程序。对于开发,我在Linux和MacOSX上使用Eclipse和CDT,macos,cmake,environment-variables,eclipse-cdt,Macos,Cmake,Environment Variables,Eclipse Cdt,直到最近,我才使用CMake创建我从控制台运行的常用Make文件。为了有一个工作环境,英特尔编译器附带了一个名为iccvars.sh的shell脚本,它可以是sourced来设置所有必需的include和library路径 现在我决定给EclipseCDT构建系统一个机会,并使用CMake的“EclipseCDT4-UnixMakefiles”生成器创建一个Eclipse项目文件。在Linux下一切正常,但在OSX下,Eclipse不知道环境变量,因此缺少像DYLD\u LIBRARY\u PA
iccvars.sh
的shell脚本,它可以是source
d来设置所有必需的include和library路径
现在我决定给EclipseCDT构建系统一个机会,并使用CMake的“EclipseCDT4-UnixMakefiles”生成器创建一个Eclipse项目文件。在Linux下一切正常,但在OSX下,Eclipse不知道环境变量,因此缺少像DYLD\u LIBRARY\u PATH
这样的路径,编译停止,因为找不到库
更新
让我更详细地解释一下我的工作。我在跑步
cmake -G "Eclipse CDT4 - Unix Makefiles" path/to/src
在执行源iccvars.sh
且所有环境变量设置正确的终端内。如果我在那里创建了一个普通的Makefile并运行make
,编译就会成功。这是因为DYLIB\u LIBRARY\u PATH
(在Linux中LD\u LIBRARY\u PATH
)设置正确,并且我不必将-L/PATH/to/libs
作为编译器的选项
但相反,我启动Eclipse并导入创建的.project
,该项目运行良好。问题是Eclipse不知道控制台中的环境,因此无法找到所需的库。一种解决方案是在CMakeLists.txt
中使用find_library
并找到每个所需的库,因为这样创建的makefile中应该包含完整路径。相反,我想知道是否
问题:是否有办法将iccvars.sh
源代码输入到我的CMakeLists.txt中,以便即使我不在通常的终端环境中,路径也可用?还有其他的可能性吗
请注意,我知道您可以在OSX下为GUI程序设置环境变量。您需要做的是在家中的
~/.MacOSX
下创建一个文件environment.plist
。在这个xml文件中,您放置了GUI程序应该具有的所有变量。这对于其他应用程序来说很好,但尤其是Eclipse构建器似乎忽略了这一点 如果该iccvars.sh
脚本仅设置了环境,则可以在运行它之后立即尝试生成CDT项目:iccvars.sh&&cmake-G“EclipseCDT4或其他”项目/dir
。如果这样做有效,就不需要每次编译前都运行它了。@arrowdodger是的,我就是这么做的。我在正确的环境中运行cmake。请在帖子中查看我的更新。