0

CLion IDE をテストしており、最小限の C++ プログラムを作成しようとしています。これが私のコードです:

main.cpp で:

#include "classings.h"

int main() {
    classings s;
    s.doSomething();
    return 0;
}

classings.h:

class classings {
public:
    void doSomething();
};

classings.cpp:

#include <string>
#include <iostream>
#include "classings.h"

void classings::doSomething() {
    std::cout << "hei" << std::endl;
}

なぜこれが私にこのエラーを与えるのか分かりません:

Undefined symbols for architecture x86_64:
  "classings::doSomething()", referenced from:
      _main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私はOSX 10.10を使用しています。

4

1 に答える 1

0

あなたのソースファイルclassings.hclassings.cppはあなたのCMakeLists.txt.

を開くCMakeLists.txtと、次のように表示されます。

不完全なCMakeLists.txt

cmake_minimum_required(VERSION 2.8.4)
project(untitled)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp) # your other source files aren't listed
add_executable(my-program ${SOURCE_FILES})

新しいソースファイルを含めることで問題を解決できます

正しいCMakeLists.txt

cmake_minimum_required(VERSION 2.8.4)
project(untitled)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp classings.hpp classings.cpp) # manually listing all sources
add_executable(my-program ${SOURCE_FILES})

参考までに、 file()またはaux_source_directory()コマンドCMakeLists.txtを使用して、新しいソース ファイルを追加/削除するたびに編集する手間を省くことができます。次に例を示します。

set(SOURCE_DIRECTORY "src")
file(GLOB_RECURSE SOURCE_FILES "${SOURCE_DIRECTORY}/*.c"   "${SOURCE_DIRECTORY}/*.h"
                               "${SOURCE_DIRECTORY}/*.cc"  "${SOURCE_DIRECTORY}/*.hh"
                               "${SOURCE_DIRECTORY}/*.cpp" "${SOURCE_DIRECTORY}/*.hpp"
                               "${SOURCE_DIRECTORY}/*.cxx" "${SOURCE_DIRECTORY}/*.hxx")
add_executable(my-program ${SOURCE_FILES})

または

aux_source_directory("src" SOURCE_FILES)
add_executable(my-program ${SOURCE_FILES})
于 2015-02-14T11:53:22.263 に答える