clion 2016.3-1 및 번들로 제공된 cmake 3.6.2를 사용하여 여러 운영 체제에서 일부 모델 코드를 설정하려고합니다. Windows에서 cygwin 환경을 사용하고 있지만 해결할 수없는 연결 문제가 발생했습니다.cmake가 windows에서 cygwin으로 netcdf에 대한 정의되지 않은 참조를주는 이유는 무엇입니까?
undefined reference to `nc_open'
바이너리 : I과 유사한 오류 메시지를 많이 얻을 그러나
cmake_minimum_required(VERSION 3.3)
project(test_examples)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lnetcdf")
include_directories("/usr/include")
link_directories("/usr/lib")
set(SOURCE_FILES main.c)
add_executable(test_examples ${SOURCE_FILES})
: 여기
#include <stdlib.h>
#include <stdio.h>
#include <netcdf.h>
#define ERRCODE 2
#define ERR(e) {printf("Error: %s\n", nc_strerror(e)); exit(ERRCODE);}
int main() {
int ncid, varid, dimid, retval;
size_t nlat;
char filepath[] = "minimumExample.nc";
char dimname[64];
double *latitudes;
// open nc file
if ((retval = nc_open(filepath, NC_NOWRITE, &ncid))) ERR(retval);
// find variable IDs
if ((retval = nc_inq_varid(ncid, "latitude", &varid))) ERR(retval);
// find dimension bounds
if ((retval = nc_inq_vardimid(ncid, varid, &dimid))) ERR(retval);
if ((retval = nc_inq_dim(ncid, dimid, dimname, &nlat))) ERR(retval);
// allocate data array
latitudes = malloc(sizeof(double) * nlat);
// get data
if ((retval = nc_get_var_double(ncid, varid, &latitudes[0]))) ERR(retval);
// close nc file
if ((retval = nc_close(ncid))) ERR(retval);
// free data array
free(latitudes);
return(0);
}
내 CMakeLists.txt입니다 : 여기에 내 코드의 최소한의 예입니다 Include 파일은 각각의 폴더에 cygwin 환경에 존재합니다. 내가 무엇이 누락 되었습니까?
당신이 필요 haders 및 가져 오기 라이브러리를 설치 한 추가? nectcdf에는'libnetcdf-devel' 패키지가 필요합니다. – matzeri
@matzeri 모든 헤더와 라이브러리가 설치되어 있습니다. 'netcdf.h'와'netcdf.dll.a' 파일은 각각 include와 lib 디렉토리에 있습니다. –
그것은'libnetcdf.dll.a'의 –