read text file
This commit is contained in:
parent
4e11b12b63
commit
0690c7b5c9
45
CMakeLists.txt
Normal file
45
CMakeLists.txt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
project(TextReader LANGUAGES CXX)
|
||||||
|
|
||||||
|
# Set C++ standard and enable modern practices
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF) # Disable compiler-specific extensions
|
||||||
|
|
||||||
|
# Configure where binaries will be placed
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||||
|
|
||||||
|
# For larger projects
|
||||||
|
option(BUILD_TESTS "Build tests" OFF)
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
add_subdirectory(tests)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# Install target (for packaging)
|
||||||
|
# install(TARGETS text_reader DESTINATION bin)
|
||||||
|
# install(DIRECTORY data/ DESTINATION share/text_reader/data)
|
||||||
|
|
||||||
|
|
||||||
|
# Create the executable
|
||||||
|
add_executable(text_reader src/main.cpp)
|
||||||
|
|
||||||
|
# Copy data files to build directory
|
||||||
|
file(COPY data/ DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/data)
|
||||||
|
|
||||||
|
# Set compiler warnings
|
||||||
|
target_compile_options(text_reader PRIVATE
|
||||||
|
$<$<CXX_COMPILER_ID:MSVC>:/W4 /WX>
|
||||||
|
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wall -Wextra -pedantic -Werror>
|
||||||
|
)
|
||||||
|
|
||||||
|
# Platform-specific configurations
|
||||||
|
if(WIN32)
|
||||||
|
target_compile_definitions(text_reader PRIVATE _CRT_SECURE_NO_WARNINGS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Include current directory for headers
|
||||||
|
target_include_directories(text_reader PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
2
data/example.txt
Normal file
2
data/example.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/opt/nvidia/deepstream/deepstream-7.1/samples/streams/yoga.mp4
|
||||||
|
/opt/nvidia/deepstream/deepstream-7.1/samples/streams/sample_720p.mp4
|
||||||
34
src/main.cpp
Normal file
34
src/main.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// Path handling works across platforms
|
||||||
|
fs::path data_dir = "/home/user2/temp_code/text_reader/data";
|
||||||
|
fs::path file_path = data_dir / "example.txt";
|
||||||
|
|
||||||
|
try {
|
||||||
|
std::ifstream file(file_path);
|
||||||
|
if (!file.is_open()) {
|
||||||
|
throw std::runtime_error("Failed to open file: " + file_path.string());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "Contents of '" << file_path << "':\n";
|
||||||
|
std::cout << "-----------------\n";
|
||||||
|
|
||||||
|
std::string line;
|
||||||
|
int line_number = 1;
|
||||||
|
while (std::getline(file, line)) {
|
||||||
|
std::cout << "Line " << line_number++ << ": " << line << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const std::exception& e) {
|
||||||
|
std::cerr << "Error: " << e.what() << '\n';
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user