«Рецепт для достижения цели не удался», но причина не указана

#c #compiler-errors

#c #ошибки компилятора

Вопрос:

Я пытаюсь понять, с чего начать поиск, чтобы выяснить, почему этот простой код не компилируется. Он был написан на CLion и там отлично компилируется, но выходит из строя, когда я пытаюсь сделать это на другой машине за пределами IDE.

Я проверил CMakeOutput , но не вижу ничего полезного. Есть какие-нибудь идеи, где я могу поискать?

Я получаю этот вывод:

 [GIS-TK_Jenkinsfile] $ C:UsersRosstoolshudson.plugins.cmake.CmakeTool3.18.1bincmake -G "CodeBlocks - MinGW Makefiles" -D CMAKE_BUILD_TYPE=Release C:UsersRossworkspaceGIS-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:UsersRosstoolshudson.plugins.cmake.CmakeTool3.18.1bincmake --build C:UsersRossworkspaceGIS-TK_Jenkinsfile
Scanning dependencies of target GIS_Toolkit
[ 25%] Building CXX object CMakeFiles/GIS_Toolkit.dir/src/spatial_functions.cpp.obj
CMakeFilesGIS_Toolkit.dirbuild.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
CMakeFilesMakefile2: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_resu<
    float y_resu<

    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 amp;amp; degrees <= 180 ) {
        if ( degrees == 180 amp;amp; 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)
  

Комментарии:

1. А ты #include <sstream> ?

2. Я попробовал это, но получил тот же результат.

3. Можете ли вы показать нам свой CMakeLists.txt ?

4. Добавил его только что.