cmake не связывает мой класс, я думаю, ошибки в cmakelists.text, вероятно, виновны - PullRequest
0 голосов
/ 28 мая 2019

Я думаю, возможно, я неправильно настроил cmake (или неправильно настроил cmake в этом отношении), или я плохой и ржавый на C ++ или на обоих, и, возможно, больше. Я просто хочу добавить заголовок и отдельный код в класс, который загружает изображения для opengl. Я также поместил их в другой каталог параллельно другим библиотекам в моем дереве файлов Linux.

Основная папка проекта содержит основной файл cmakelists.text, который называется «maficengine». Внутри него также находятся «сборочный» файл, «общий» файл и «внешний» файл и файл с именем «Mafic», «maficGuiSourceFiles» и один файл с именем «distrib». Я думаю, что мы можем просто сосредоточиться на 2. "мафических" и "внешних". Внутри mafic у меня есть файл mafic.cpp, который имеет мою основную функцию и является точкой входа. Внутри внешней есть еще одна папка с именем «myCustomHeaders». В ней находится файл с именем «loadTexture.cpp». Он содержит объявление и определение класса loadTexture. Также внутри «myCustomHeaders» есть файл «include», который содержит «loadTexture.h» ... Я не могу создать экземпляр экземпляра LoadTexture lt; и вызвать функцию loadtexture (); Я ожидаю, что в строке 187 в mafic.cpp


#cmakelists.text file from main project folder

# CMake entry point
cmake_minimum_required (VERSION 3.0)


project (maficengine )

find_package(OpenGL REQUIRED)



add_library(loaders
 external/myCustomHeaders/loadTexture.cpp
 external/myCustomHeaders/include/loadTexture.h
 )

  set(SOURCES  external/myCustomHeaders/loadTexture.cpp )



# Compile external dependencies 
add_subdirectory (external)


# On Visual 2005 and above, this module can set the debug working directory
cmake_policy(SET CMP0026 OLD)
cmake_policy(SET CMP0079  NEW)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/rpavlik-cmake-modules-fe2273")
include(CreateLaunchers)
include(MSVCMultipleProcessCompile) # /MP

if(INCLUDE_DISTRIB)
    add_subdirectory(distrib)
endif(INCLUDE_DISTRIB)



include_directories(
    external/AntTweakBar-1.16/include/
    external/glfw-3.1.2/include/
    external/glm-0.9.7.1/
    external/glew-1.13.0/include/
    external/assimp-3.0.1270/include/
    external/bullet-2.81-rev2613/src/
    external/myCustomHeaders/include
    common/
)

set(ALL_LIBS
    ${OPENGL_LIBRARY}
    glfw
    GLEW_1130
    loaders
)

add_definitions(
    -DTW_STATIC
    -DTW_NO_LIB_PRAGMA
    -DTW_NO_DIRECT3D
    -DGLEW_STATIC
    -D_CRT_SECURE_NO_WARNINGS
)

# Tutorial 17
add_executable(mageengine
    Mafic/mafic.cpp
    common/shader.cpp
    common/shader.hpp
    common/controls.cpp
    common/controls.hpp
    common/texture.cpp
    common/texture.hpp
    common/objloader.cpp
    common/objloader.hpp
    common/vboindexer.cpp
    common/vboindexer.hpp
    common/quaternion_utils.cpp
    common/quaternion_utils.hpp
    #Mafic/loadTexture.h
    #Mafic/loadTexture.cpp
    Mafic/StandardShading.vertexshader
    Mafic/StandardShading.fragmentshader
)


target_link_libraries(mageengine
    ${ALL_LIBS}
    ANTTWEAKBAR_116_OGLCORE_GLFW
   loaders
)

вот mafic.cpp


#include <loadTexture.h>


int main( void )
{

loadTexture lt;

 lt.loadtexture();
 }

вот мой loadTexture.cpp




class loadTexture
{

public:

loadTexture();

~loadTexture();

void loadtexture(){



fprintf(stdout, "loadtexture does something, that's a positive result for this test");



}




};

и наконец мой loadTexture.h

[code] 
#pragma once

#include <GL/glew.h>

//GLuint image;
void loadtexture();
[/code]


Надеюсь, он будет построен без ошибок, но я получаю ...


aaron@Zog:~/Desktop/maficengine/build$ make 
[  2%] Built target ANTTWEAKBAR_116_OGLCORE_GLFW
[  2%] Built target GLEW_1130
[  2%] Built target loaders
[  6%] Built target glfw
[  7%] Building CXX object CMakeFiles/mageengine.dir/Mafic/mafic.cpp.o
/home/aaron/Desktop/maficengine/Mafic/mafic.cpp:1:9: warning: #pragma once in main file
#pragma once
        ^~~~
/home/aaron/Desktop/maficengine/Mafic/mafic.cpp: In function ‘int main()’:
/home/aaron/Desktop/maficengine/Mafic/mafic.cpp:187:1: error: ‘loadTexture’ was not declared in this scope
loadTexture lt;
^~~~~~~~~~~
/home/aaron/Desktop/maficengine/Mafic/mafic.cpp:187:1: note: suggested alternative: ‘loadtexture’
loadTexture lt;
^~~~~~~~~~~
loadtexture
/home/aaron/Desktop/maficengine/Mafic/mafic.cpp:189:2: error: ‘lt’ was not declared in this scope
 lt.loadtexture();
 ^~
CMakeFiles/mageengine.dir/build.make:62: recipe for target 'CMakeFiles/mageengine.dir/Mafic/mafic.cpp.o' failed
make[2]: *** [CMakeFiles/mageengine.dir/Mafic/mafic.cpp.o] Error 1
CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/mageengine.dir/all' failed
make[1]: *** [CMakeFiles/mageengine.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
aaron@Zog:~/Desktop/maficengine/build$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...