如何配置在CLion中构建项目的方式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何配置在CLion中构建项目的方式?相关的知识,希望对你有一定的参考价值。

问题如下。

我已经通过libarmadillo实用程序在我的Ubuntu分配上安装了apt,该实用程序之前安装了liblapacklibblas。我正在尝试在我的CLion项目中使用它。我的意图导致我收到一些构建错误。其中一个是通过添加#define ARMA_DONT_USE_WRAPPER解决的。

我找到了在这个主题中构建我的项目的方法 - Armadillo + BLAS + LAPACK: Linking error?。虽然,我只能用终端构建它。我假设CLion的问题是CMake配置。

我改变CMake脚本的方式是什么,以便我改进其构建的行为并使其编译我的项目?

简单来说,我如何使用g++ main.cpp -o lab2 -O1 -llapack -lblas编译我的程序。

代码示例:

#define ARMA_DONT_USE_WRAPPER
#define ARMA_USE_BLAS
#define ARMA_USE_LAPACK
#include <armadillo>
#include <iostream>
using namespace arma;
using namespace std;

int main() {
mat A(4, 5);
A.load("matrix.txt");
mat B = resize(A, 4, 4);
cout << norm(A, 2);
cout << B;
return 0;
}

我发出的错误:

CMakeFiles/lab2.dir/main.cpp.o: In function `double 
arma::blas::asum<double>(unsigned long long, double const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:241: undefined reference 
to `dasum_'
CMakeFiles/lab2.dir/main.cpp.o: In function `double 
arma::blas::nrm2<double>(unsigned long long, double const*)':
/usr/include/armadillo_bits/wrapper_blas.hpp:273: undefined reference 
to `dnrm2_'
collect2: error: ld returned 1 exit status
CMakeFiles/lab2.dir/build.make:94: recipe for target 'lab2' failed
make[3]: *** [lab2] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/lab2.dir/all' 
failed
make[2]: *** [CMakeFiles/lab2.dir/all] Error 2
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/lab2.dir/rule' 
failed
make[1]: *** [CMakeFiles/lab2.dir/rule] Error 2
Makefile:118: recipe for target 'lab2' failed
make: *** [lab2] Error 2

的CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)
project(lab2)

set(CMAKE_CXX_STANDARD 11)

add_executable(lab2 main.cpp)
答案

您首先需要CMake函数来查找库liblapack和libblas。对于这两者,标准cmake分布中已经存在功能

find_package(BLAS REQUIRED)
find_package(LAPACK REQUIRED)
find_package(Armadillo REQUIRED)

请参阅cmake modules目录中的FindBLAS.cmake和FindLAPACK.cmake,以获取它们定义的变量的文档。

然后将它们添加到目标中,例如:

target_link_libraries(lab2 ${LAPACK_LIBRARIES} ${BLAS_LIBARIES} ${ARMADILLO_LIBRARIES})
另一答案

正如@Richard Hodges在评论中所说,在设置中,您可以设置馈送到CMake的变量以及定义环境变量。

我还想做的是包含一个自定义CMake脚本来轻松调整配置;例如,添加你的CMakeLists.txt

include(local.cmake OPTIONAL)

这样,您可以将local.cmake中所需的任何CMake配置放在源目录中,并对其进行解析。如果文件不存在,则不会发生任何事情。

以上是关于如何配置在CLion中构建项目的方式?的主要内容,如果未能解决你的问题,请参考以下文章

CLion 在构建后强制文件刷新,耗时太长

如何在CMAKE和CLION中的每次构建后运行复制脚本? [重复]

如何安装配置clion开发环境

未指定 CLion 目标 - 无目标

Clion(CMake工具)中如何引入第三方库

CLion 无法将项目识别为 C++14