{"id":20400110,"url":"https://github.com/codebrainz/cdk-plugin","last_synced_at":"2026-05-10T10:38:00.583Z","repository":{"id":35277712,"uuid":"39538505","full_name":"codebrainz/cdk-plugin","owner":"codebrainz","description":"Plugin to add advanced C/C++ features to the Geany IDE","archived":false,"fork":false,"pushed_at":"2015-08-01T06:29:49.000Z","size":208,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-15T11:48:05.759Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codebrainz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-23T01:16:41.000Z","updated_at":"2021-09-30T02:28:15.000Z","dependencies_parsed_at":"2022-09-16T22:01:47.130Z","dependency_job_id":null,"html_url":"https://github.com/codebrainz/cdk-plugin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebrainz%2Fcdk-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebrainz%2Fcdk-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebrainz%2Fcdk-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebrainz%2Fcdk-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codebrainz","download_url":"https://codeload.github.com/codebrainz/cdk-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241947953,"owners_count":20047308,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T04:38:26.348Z","updated_at":"2026-05-10T10:37:55.559Z","avatar_url":"https://github.com/codebrainz.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"README\n======\n\nIntroduction\n------------\n\nCDK, which stands for C/C++ Development Kit, is a plugin for the Geany\nIDE which adds advanced features for C and C++ (and eventually\nObjective-C) languages. Making use of Clang's C library providing\naccess to the compiler internals allows the plugin to provide\nintelligent features that just aren't feasible to do inside Geany's\ncore code for each language it supports.\n\nThe plugin is currently under active development and to be considered\nexperimental.\n\nFeatures\n--------\n\nThe planned features for the CDK plugin include:\n\n  - Semantic syntax higlighting (partially implemented)\n  - Improved intellisense-style autocompletion (partially implemented)\n  - Real-time diagnostic reporting\n  - Improved navigation between files and symbols\n  - Automatic code-formatting\n  - Smart refactoring features\n  - Whatever other useful features are possible with libclang\n\nDependencies\n------------\n\nCDK obviously depends on the Geany API/library. Additionally, it\nrequires Geany to be built against GTK+ 3 (by configuring it with the\n`--enable-gtk3` flag). Until the plugin is stabilized, the development\nversion of Geany (from Git) will be used as the target version.\n\nThe other notable dependency is Clang/LibClang. Many Linux\ndistributions provide packages for it, and the LLVM project which Clang\nis a part of also provides repositories and packages for a number of\nother platforms. Depending on how/where libclang and its development\nheaders were installed, you may have to set some environment variables\nwhen configuring the build system. For example on my Ubuntu machine\nusing LLVM's repositories, with Clang 3.6, I need to configure CDK like\nthis:\n\n    $ CFLAGS=\"-I/usr/lib/llvm-3.6/include\" \\\n      LDFLAGS=\"-L/usr/lib/llvm-3.6/lib\" \\\n        ./configure\n\nIn the future, CDK may start depending on Clang's unstable C++ API to\ngain access to the required functionality as initial research seems to\nindicate some features won't be possible to implement using the plain\nC API.\n\nUsage\n-----\n\nWhen the plugin is activated, it adds a tab to Geany's Project\npreferences dialog named CDK. Inside this tab is where you can\nconfigure a project to be supported by CDK.\n\nThe current configuration GUI is very basic and so quite annoying to\nuse. It has two text boxes, one for compiler flags and one for a list\nof files that should be handled by the CDK plugin. Expect the GUI and\nway of configuring the plugin to change drastically to make it more\nuser-friendly.\n\n### Compiler Flags\n\nThis text box should contain the \"cflags\" which would be passed to the\nClang compiler on the command line. It seems to also handle putting the\nfull command, including the compiler executable.\n\nNote: Depending on your Clang installation, you may have to add its\nstandard library header directory to the include search path (using the\n`-I` flag). At least on Ubuntu, Clang seems to have problems finding\nsome of the platform-specific stdlib headers it provides on its own.\n\nHint: If you're compiling code that depends on libraries that provide a\n`pkg-config` file, you can copy and paste the output of that utility\ninto the compiler flags text box.\n\n### Source Files\n\nThis text box is where you tell the CDK plugin which files are part of\nthe project. The files should be listed each on their own line and\nshould be absolute or relative to the project's base directory.\n\nThese files correspond 1:1 with Clang \"translation units\" and they\nrepresent the files which, when opened in Geany, will be parsed and\nprocessed in order to provide the advanced features.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebrainz%2Fcdk-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodebrainz%2Fcdk-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebrainz%2Fcdk-plugin/lists"}