Merge pull request 'Update template' (#1) from cmake into master
Reviewed-on: cspark/CPP-on-NixOS#1
This commit is contained in:
commit
3e3122bc12
|
|
@ -1,2 +1,3 @@
|
|||
build/
|
||||
.cache/
|
||||
a.out
|
||||
.ccls-cache/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
cmake_minimum_required(VERSION 3.23)
|
||||
|
||||
project(template)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 23)
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
#string(REPLACE ":" ";" INCLUDE_LIST $ENV{CMAKE_STDLIB})
|
||||
#include_directories($ENV{CMAKE_STDLIB})
|
||||
|
||||
add_executable(template)
|
||||
|
||||
target_sources(template
|
||||
PRIVATE
|
||||
main.cpp
|
||||
)
|
||||
18
README.org
18
README.org
|
|
@ -1,16 +1,2 @@
|
|||
* NixOS C++ Dev Template
|
||||
Having issues getting clangd to detect std header files despite clang++ and g++ having no issues. So this template/workaround solves this.
|
||||
|
||||
I assume this is due to some wrapper script nonsense.
|
||||
|
||||
As a workaround I use bear to generate the necessary paths/arguments to get clangd to pick these up.
|
||||
|
||||
#+BEGIN_SRC
|
||||
bear -- clang++ main.cpp
|
||||
#+END_SRC
|
||||
|
||||
In the generated compile_commands.json. There is a command for generating the main project but also a temporary object file.
|
||||
|
||||
I assume this is more weird wrapper stuff (Bear does not support nixos clang wrappers)
|
||||
|
||||
You need to move the cxx_isystem related flags as these are where the c++ stdlibs are kept. Also just rename them to isystem otherwise they dont work for whatever reason.
|
||||
* Nix C++ Dev Template
|
||||
Basic C++ CMake template with Nix
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
[
|
||||
{
|
||||
"arguments": [
|
||||
"/run/current-system/sw/bin/clang++",
|
||||
"-std=c++23",
|
||||
"-resource-dir",
|
||||
"/nix/store/k2s6xfca52n25yb8b6f58i87kszp3m7g-clang-wrapper-21.1.2/resource-root",
|
||||
"-idirafter",
|
||||
"/nix/store/dqgfdpr53ldqmdfmginb1z6kzslkzsdl-glibc-2.40-66-dev/include",
|
||||
"-isystem",
|
||||
"/nix/store/68ndh04pl2hhhizsarvzwa9cnlp7zj3d-gcc-14.3.0/include/c++/14.3.0",
|
||||
"-isystem",
|
||||
"/nix/store/68ndh04pl2hhhizsarvzwa9cnlp7zj3d-gcc-14.3.0/include/c++/14.3.0/x86_64-unknown-linux-gnu",
|
||||
"-c",
|
||||
"main.cpp"
|
||||
],
|
||||
"directory": "/home/cspark/Projects/CPP/hello_world",
|
||||
"file": "/home/cspark/Projects/CPP/hello_world/main.cpp"
|
||||
}
|
||||
]
|
||||
|
|
@ -0,0 +1 @@
|
|||
build/compile_commands.json
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
with (import <nixpkgs> {});
|
||||
|
||||
clangStdenv.mkDerivation {
|
||||
name = "template";
|
||||
nativeBuildInputs = with pkgs; [
|
||||
cmake
|
||||
|
||||
clang-tools
|
||||
clang
|
||||
];
|
||||
|
||||
# Workaround as Clangd cannot see std header files, so include set of files manually just for Clangd
|
||||
CXXFLAGS = "-isystem${pkgs.gcc.cc}/include/c++/14.3.0 -isystem${pkgs.gcc.cc}/include/c++/14.3.0/x86_64-unknown-linux-gnu -isystem${pkgs.glibc.dev}/include";
|
||||
}
|
||||
4
main.cpp
4
main.cpp
|
|
@ -1,6 +1,6 @@
|
|||
#include <iostream>
|
||||
#include <print>
|
||||
|
||||
int main() {
|
||||
std::println("Hello, world!");
|
||||
std::cout << "Hello, world!" << std::endl;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue