TravisWheelerLab / ULTRA

ULTRA Locates Tandemly Repetitive Areas
BSD 3-Clause "New" or "Revised" License
23 stars 4 forks source link

repeat.hpp incomplete library load #14

Closed mvolar closed 2 years ago

mvolar commented 2 years ago

When running make in current version (on WSL2) the following error props up:

repeat.hpp:63:8: error: ‘vector’ in namespace ‘std’ does not name a template type

The fix is to add

#include <vector>

in repeat.hpp in the source.

DanielOlson commented 2 years ago

Hi mvolar,

I'm not able to replicate your build error. Can you confirm that you are using the version currently in the main branch and building with cmake . followed by make?

mvolar commented 2 years ago

Hello, thanks for the fast response,

here is the wsl2 terminal output:

(base) marin@mashine:/mnt/d/assembly_analysis/ULTRA$ cmake .

and the output is:

-- The C compiler identification is GNU 7.5.0 
-- The CXX compiler identification is GNU 7.5.0 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done  
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: /mnt/d/assembly_analysis/ULTRA

Afterwards we run: (base) marin@mashine:/mnt/d/assembly_analysis/ULTRA$ make

and the output is:

[  6%] Building CXX object CMakeFiles/ultra.dir/lib/json11.cpp.o
[ 12%] Building CXX object CMakeFiles/ultra.dir/src/FASTAReader.cpp.o
[ 18%] Building CXX object CMakeFiles/ultra.dir/src/FileReader.cpp.o
[ 25%] Building CXX object CMakeFiles/ultra.dir/src/SequenceWindow.cpp.o
[ 31%] Building CXX object CMakeFiles/ultra.dir/src/Symbol.cpp.o
[ 37%] Building CXX object CMakeFiles/ultra.dir/src/main.cpp.o
[ 43%] Building CXX object CMakeFiles/ultra.dir/src/repeat.cpp.o
In file included from /mnt/d/assembly_analysis/ULTRA/src/repeat.cpp:6:0:
/mnt/d/assembly_analysis/ULTRA/src/repeat.hpp:63:8: error: ‘vector’ in namespace ‘std’ does not name a template type
   std::vector<int> *splits;
        ^~~~~~

When inspecting the repeat.hpp in the local version (and the github version in src/) the only declared libraries are:

#ifndef repeat_hpp
#define repeat_hpp
#include <stdio.h>
#include <string>
#include "SequenceWindow.hpp"
#include "Symbol.hpp"
#include "umatrix.hpp"

and once I added

#include <vector>

in repeat.hpp the make command finishes without a problem, and the code executes on both test data and my local data. I don't know specifically what the problem is, could be a quirk of the compiler in WSL2 or something similar.

DanielOlson commented 2 years ago

Adding #include <vector> to repeat.hpp. It'll take a few days for those changes to make their way to main - thanks for catching this!