je suit la structure de répertoire:CMake: référence non définie à la fonction
├── build (empty dir)
├── CMakeLists.txt
├── easylogging++.h
├── help.h
├── operation.h
├── operation_list.h
├── operations
│ ├── CMakeLists.txt
│ ├── matchcount.cc
│ └── matchcount.h
└── ops_toolkit.cc
Je suis nouveau à CMake et essayer d'écrire CMakeLists.txt. Mon matchcount.h a une signature dont l'implémentation est dans matchcount.cc (comme structure C/C++ typique). Ce qui suit est mon CMakeLists.txt dans le répertoire de base
cmake_minimum_required(VERSION 2.6)
project(ops_toolkit)
add_subdirectory(operations)
add_executable(ops_toolkit ops_toolkit.cc)
set(CMAKE_CXX_FLAGS "-std=c++0x")
et suivant est celui dans les opérations répertoire
include_directories(${ops_toolkit_SOURCE_DIR}/operations)
link_directories(${ops_toolkit_BINARY_DIR}/operations)
set(all_operations_HEADER operations/matchcount.h)
set(all_operations_SOURCES operations/matchcount.cc)
Je reçois référence non définie à la signature de fonction appelée int matchcount(int, const char**)
et faire PLAINT suivant
dev:~/work/ops_toolkit/build$ make
Scanning dependencies of target ops_toolkit
[100%] Building CXX object CMakeFiles/ops_toolkit.dir/ops_toolkit.cc.o
Linking CXX executable ops_toolkit
CMakeFiles/ops_toolkit.dir/ops_toolkit.cc.o: In function `__static_initialization_and_destruction_0(int, int)':
ops_toolkit.cc:(.text+0x249): undefined reference to `operations::matchcount(int, char const**)'
collect2: ld returned 1 exit status
make[2]: *** [ops_toolkit] Error 1
make[1]: *** [CMakeFiles/ops_toolkit.dir/all] Error 2
make: *** [all] Error 2
Quelqu'un peut-il m'aider? Merci
Implémentez-vous les opérations :: matchcount (int, char const **)? –
@LuchianGrigore C'est une autre chose, je n'ai pas de déclaration ou de définition avec cette signature, j'ai des opérations :: matchcount (int, const char **). Et oui j'ai implémentation de celui-ci dans matchcount.cc – abumusamq
'char const **' est la même chose que 'const char **'. Est-ce que matchcount est un projet? – Synxis