π Python's platformdirs module for C++
auto dirs = platformdirs::platform_dirs(app_name, app_author, "1.0");
std::println("user_data_dir: {}", dirs.user_data_dir());
std::println("user_config_dir: {}", dirs.user_config_dir());
std::println("user_cache_dir: {}", dirs.user_cache_dir());
std::println("user_state_dir: {}", dirs.user_state_dir());
std::println("user_log_dir: {}", dirs.user_log_dir());
std::println("...and more!");
|
π Same API surface as platformdirs
πΊ Works great with CMake
π
Uses platformdirs' opinionated directories
π¦ Works on Windows
π Works with cosmocc!
- CMake
find_package()
withFetchContent
fallback -
include(FetchContent) FetchContent_Declare(platformdirs GIT_REPOSITORY https://github.com/jcbhmr/platformdirs-cpp.git GIT_TAG v0.1.0 FIND_PACKAGE_ARGS 0.1.0...<1) # Will try find_package(platformdirs 0.1.0...<1) first FetchContent_MakeAvailable(platformdirs) # ... # Now link it into your app/lib target target_link_libraries(myapp platformdirs::platformdirs) target_link_libraries(mylib platformdirs::platformdirs)
main.cpp
#include <print>
#include <platformdirs.h>
int main() {
std::println("my app config: {}", platformdirs::user_config_dir("myapp", "me", "1.2.3"));
return 0;
}
π See the complete API surface on the website
π‘ Pro tip: there's an included platformdirs
executable which prints a report of all the config dirs for you. It's great for debugging! π
cmake --workflow --preset default
cmake --workflow --preset test