Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[cmake] Jak napisać cmake ?

Ostatnio zmodyfikowano 2025-06-15 11:31
Autor Wiadomość
nanoant20
» 2025-06-09 08:08:17
dobra zostawiam tak..



target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)

serio? , po co to zostało napisane ? , nie ma to wpływu na kompilacje.
w pliku main.cpp przecież dołączasz
#include "SFML_intro.hpp"

CMake automatycznie znajduje nagłówki, jeśli są inkludowane w plikach .cpp.

brak jest linijki odpowiedzialnej za dostarczenie "sfml-icon-big.png" do folderu/katalogu docelowego/wyjściowego
P-182518
tBane
Temat założony przez niniejszego użytkownika
» 2025-06-10 16:36:40
jak usunę tę linię to mi nie doda headerów do projektu

target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)
P-182519
nanoant20
» 2025-06-10 19:07:44
jak usunę tę linię to mi nie doda headerów do projektu

target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)

Zamiast dodawać pliki nagłówkowe (.hpp) do target_sources, powinieneś użyć target_include_directories, aby wskazać katalog, w którym znajdują się te pliki. W target_sources powinno się wymieniać pliki źródłowe (.cpp)
Po otwarciu projektu z poprawnie skonfigurowanym plikiem "CMakeLists.txt" w Visual Studio 2022, wszystkie pliki nagłówkowe (.hpp) powinny być widoczne w Eksploratorze rozwiązań, czy jak się tam to nazywa poprawnie / fachowo.
P-182522
tBane
Temat założony przez niniejszego użytkownika
» 2025-06-11 20:28:48
jak usunę tę linię to mi nie doda headerów do projektu

target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)

Zamiast dodawać pliki nagłówkowe (.hpp) do target_sources, powinieneś użyć target_include_directories, aby wskazać katalog, w którym znajdują się te pliki. W target_sources powinno się wymieniać pliki źródłowe (.cpp)
Po otwarciu projektu z poprawnie skonfigurowanym plikiem "CMakeLists.txt" w Visual Studio 2022, wszystkie pliki nagłówkowe (.hpp) powinny być widoczne w Eksploratorze rozwiązań, czy jak się tam to nazywa poprawnie / fachowo.

Jak tak zrobię to nie dodaje mi headerów do projektu..
P-182528
nanoant20
» 2025-06-11 21:53:24
Jak tak zrobię to nie dodaje mi headerów do projektu..
co to znaczy ?
Gdzie jest "CMakeLists.txt" w którym pokazujesz jak to robisz?
Gdzie jest struktura folderów / katalogów ?
czy ma ktoś odgadywać, albo domyślać się, o co dokładnie chodzi,
Przedstaw swój problem w sposób jasny i precyzyjny, wtedy może ktoś będzie mógł znaleźć rozwiązanie
P-182533
tBane
Temat założony przez niniejszego użytkownika
» 2025-06-11 21:59:43
No więc tak to wszystko wygląda. Jak na razie wszystko działa. :-)

// struktura folderów
-Easy Notepad
|--main.cpp
|--SFML_intro.hpp
|--sfml-icon-big.png
-screenshots
|--01.png
|--02.png

// CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(EasyNotepad VERSION 2.0)

add_executable(${PROJECT_NAME} EasyNotepad/main.cpp)

target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)

set_target_properties(${PROJECT_NAME} PROPERTIES
  CXX_STANDARD 17
  CXX_STANDARD_REQUIRED ON
)

target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)

set(SFML_DIR "C:/SFML-2.6.2/lib/cmake/SFML")
find_package(SFML 2.6.2 COMPONENTS graphics window system REQUIRED)
target_link_libraries(${PROJECT_NAME} sfml-graphics sfml-window sfml-system)

# Ustaw working directory na katalog z assets
set_target_properties(${PROJECT_NAME} PROPERTIES
    VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/EasyNotepad"
)

# Ustaw PATH do DLL-i SFML, by nie kopiować
set_target_properties(${PROJECT_NAME} PROPERTIES
    VS_DEBUGGER_ENVIRONMENT "PATH=%PATH%;C:\\SFML-2.6.2\\bin"
)

// Struktura Projektu
P-182535
nanoant20
» 2025-06-11 23:03:31
w tym "CMakeLists.txt" nigdzie nie użyłeś funkcji "target_include_directories".
całkiem możliwe że funkcja "target_include_directories" nie wpływa w Visual Studio na widoczność plików nagłówkowych w Eksploratorze.
I trzeba je dodać tak jak robisz za pomocą target_sources:
target_sources(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)
To dość uciążliwe, że w przypadku większej liczby plików nagłówkowych .hpp konieczne jest ręczne ich wypisywanie, żeby były widoczne w Solution Explorer.

P-182536
tBane
Temat założony przez niniejszego użytkownika
» 2025-06-12 00:11:38
bo jak zrobiłem
target_include_directories(${PROJECT_NAME} PRIVATE
    EasyNotepad/SFML_intro.hpp
)
to mi nie dodawało headerów :-/
P-182537
1 2 3 « 4 » 5
Poprzednia strona Strona 4 z 5 Następna strona