如何让sigpack找到犰狳?

时间:2017-11-09 16:08:37

标签: c++ cmake header armadillo

我目前正在尝试sigpack使用cmake查找armadillo。包括犰狳似乎不是问题,因为我可以使用find_package()包含它,但由于某种原因,sigpack找不到它。

sigpack是一个仅限标题的库,我将它包含在我的项目中的方式是将头文件移动到我的项目中,并手动将它们包含在cmake中,我有点不确定是否正确完成,或者是否可以。

MESSAGE(“In spectogram CMAKELIST”)
MESSAGE( "${CMAKE_CURRENT_SOURCE_DIR}/base/base.h" )


SET(HEADERS
    ${CMAKE_CURRENT_SOURCE_DIR}/base/base.h
    ${CMAKE_CURRENT_SOURCE_DIR}/fftw/fftw.h
    ${CMAKE_CURRENT_SOURCE_DIR}/base/base.h
    ${CMAKE_CURRENT_SOURCE_DIR}/filter/filter.h
    ${CMAKE_CURRENT_SOURCE_DIR}/gplot/gplot.h
    ${CMAKE_CURRENT_SOURCE_DIR}/image/image.h
    ${CMAKE_CURRENT_SOURCE_DIR}/kalman/kalman.h
    ${CMAKE_CURRENT_SOURCE_DIR}/parser/parser.h
    ${CMAKE_CURRENT_SOURCE_DIR}/resampling/resampling.h
    ${CMAKE_CURRENT_SOURCE_DIR}/spectrum/spectrum.h
    ${CMAKE_CURRENT_SOURCE_DIR}/timing/timing.h
    ${CMAKE_CURRENT_SOURCE_DIR}/window/window.h
    ${CMAKE_CURRENT_SOURCE_DIR}/sigpack.h
    )

find_package(Armadillo REQUIRED)
include_directories(${ARMADILLO_INCLUDE_DIRS})

add_library(spectogram STATIC spectogram.cpp spectogram.h ${HEADERS})
target_link_libraries(spectogram PUBLIC ${ARMADILLO_LIBRARIES})
target_include_directories(spectogram PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_features(spectogram PUBLIC cxx_defaulted_functions)

MESSAGE(“out spectogram CMAKELIST”)

目前给我错误的代码是这个类定义:

#pragma once

#include "sigpack.h"
class spectogram {
private:
    int m_var{ 23 };

public:
    void set_var(int value);
    int  get_var() const;
};

此代码目前给出错误消息:

 error: ‘arma_inline’ does not name a type
     arma_inline double sinc( double x )

这可能是因为sigpack看不到犰狳?我怎么做?

编译:

#pragma once

#include <armadillo>
//#include <sigpack.h>  sigpack.h cant see armadillo?

class spectogram {
private:
    int m_var{ 23 };
    arma::mat somethind;
public:
    void set_var(int value);
    int  get_var() const;
};

1 个答案:

答案 0 :(得分:1)

sigpack取决于armadillo版本&gt; 7,8 ...和apt-get install版本4,...最后从网站下载tar结束。

cmake . && make && sudo make install

我的项目能够找到正确的头文件。