如何解决“目标的配方失败,”但未给出原因
我试图弄清楚从哪里开始寻找为什么这个简单的代码无法编译。它是用CLion编写的,在那儿可以很好地进行编译,但是当我尝试在IDE之外的另一台计算机上进行编译时会崩溃。
我已经检查过CMakeOutput
,但看不到任何帮助。有什么想法可以看吗?
我得到以下输出:
[GIS-TK_Jenkinsfile] $ C:\Users\Ross\tools\hudson.plugins.cmake.CmakeTool\3.18.1\bin\cmake -G "CodeBlocks - MinGW Makefiles" -D CMAKE_BUILD_TYPE=Release C:\Users\Ross\workspace\GIS-TK_Jenkinsfile
CMake flags: -Wa,-mbig-obj
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Ross/workspace/GIS-TK_Jenkinsfile
[GIS-TK_Jenkinsfile] $ C:\Users\Ross\tools\hudson.plugins.cmake.CmakeTool\3.18.1\bin\cmake --build C:\Users\Ross\workspace\GIS-TK_Jenkinsfile
Scanning dependencies of target GIS_Toolkit
[ 25%] Building CXX object CMakeFiles/GIS_Toolkit.dir/src/spatial_functions.cpp.obj
CMakeFiles\GIS_Toolkit.dir\build.make:81: recipe for target 'CMakeFiles/GIS_Toolkit.dir/src/spatial_functions.cpp.obj' failed
mingw32-make.exe[2]: *** [CMakeFiles/GIS_Toolkit.dir/src/spatial_functions.cpp.obj] Error 1
CMakeFiles\Makefile2:93: recipe for target 'CMakeFiles/GIS_Toolkit.dir/all' failed
mingw32-make.exe[1]: *** [CMakeFiles/GIS_Toolkit.dir/all] Error 2
Makefile:101: recipe for target 'all' failed
mingw32-make.exe: *** [all] Error 2
似乎引起问题的文件包含以下内容:
#include "../include/spatial_functions.h"
#include <string>
#include <cmath>
#include <vector>
#include <iostream>
std::vector<float> spatial_functions::get_origin(float north_y,float south_y,float east_x,float west_x) {
std::vector<float> centroid;
float x_result;
float y_result;
x_result = (east_x + west_x) / 2;
y_result = (north_y + south_y) / 2;
centroid.push_back(x_result);
centroid.push_back(y_result);
return centroid;
}
std::vector<float> spatial_functions::dd_to_dms(const std::string coord)
{
std::string degrees_string = "0.0";
int degrees = 0;
std::string decimal_string = "0.0";
float decimal;
float minutes;
float seconds;
std::vector<float> results;
std::vector<std::string> strings = spatial_functions::split_string(coord,'.');
degrees_string = strings.at(0);
decimal_string = strings.at(1);
decimal_string.insert(0,1,'.');
degrees = std::stoi(degrees_string);
minutes = std::stof(decimal_string);
decimal = minutes;
if( degrees >= -180 && degrees <= 180 ) {
if ( degrees == 180 && minutes > 0.0 ){
throw std::invalid_argument( "Degrees over 180." );
} else {
// Split float at decimal point so that a.bb becomes integer a and float .bb
std::istringstream parser(coord);
//minutes = int(60 * minutes)
//seconds = abs(round(((decimal - (minutes / 60)) * 3600),3))
minutes = floor(minutes * 60);
seconds = std::abs(( decimal - ( minutes / 60 ) ) * 3600 );
seconds = round ( seconds * 1000.0 ) / 1000.0;
results.push_back(degrees);
results.push_back(minutes);
results.push_back(seconds);
}
}
return results;
}
std::vector<std::string> spatial_functions::split_string(std::string input_string,char split_char) {
std::stringstream ss_input_string;
ss_input_string << (input_string);
std::vector<std::string> string_list;
std::string segment;
while ( std::getline(ss_input_string,segment,split_char) )
string_list.push_back(segment);
return string_list;
}
我的CMakeLists.txt包含:
cmake_minimum_required(VERSION 3.17)
set(CMAKE_CXX_FLAGS "-Wa,-mbig-obj" CACHE STRING "Default XX options" FORCE)
project(GIS_Toolkit)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_PREFIX_PATH "C:\\Qt\\5.15.0\\mingw81_64")
set(CMAKE_C_COMPILER "C:\\Qt\\Tools\\mingw810_64\\bin\\gcc.exe")
set(CMAKE_CXX_COMPILER "C:\\Qt\\Tools\\mingw810_64\\bin\\g++.exe")
message("CMake flags: " ${CMAKE_CXX_FLAGS})
find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
add_executable(GIS_Toolkit src/spatial_functions.cpp
src/spatial_functions.h
include/catch.h
include/gdal_priv.h
include/ogrsf_frmts.h
src/MainWindow.cpp
src/DisplayShapefile.cpp
src/DisplayShapefile.h
)
# find qt5 library
set(Qt5_DIR "C:\\Qt\\5.15.0\\mingw81_64\\lib\\cmake\\Qt5")
target_link_libraries(GIS_Toolkit
Qt5::Core Qt5::Widgets)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。