developer tip

CMake를 사용하여 Visual Studio C ++ 프로젝트 파일 생성

copycodes 2020. 9. 14. 21:20
반응형

CMake를 사용하여 Visual Studio C ++ 프로젝트 파일 생성


Linux 및 Windows에서 컴파일되는 코드를 위해 오픈 소스 C ++ 프로젝트에서 작업 중입니다. CMake를 사용하여 Linux에서 코드를 빌드합니다. 손쉬운 개발 설정과 정치적 이유로 Windows에서 Visual Studio 프로젝트 파일 / 편집기를 고수해야합니다 ( 예를 들어 Code :: Blocks로 전환 할 수 없습니다 ). 여기 와 같이 CMake를 사용하여 Visual Studio 파일을 생성하는 지침이 표시 됩니다 .

CMake를 사용하여 Visual Studio 파일을 생성 한 적이 있습니까? 경험은 어땠습니까? 내 프로젝트에 새 파일을 추가하고 싶다고 가정합니다. 이에 대한 워크 플로우는 무엇입니까?


CMake는 실제로 이것에 꽤 좋습니다. 핵심 부분은 Windows 측의 모든 사람이 솔루션에로드하기 전에 CMake를 실행해야한다는 점을 기억해야하고, Mac 측의 모든 사용자는 make 전에 실행하는 것을 기억해야한다는 것입니다.

가장 어려운 부분은 Windows 개발자로서 구조적 변경 사항이 솔루션 또는 프로젝트 파일이 아닌 cmakelist.txt 파일에 있는지 확인하는 것이 었습니다. 이러한 변경 사항은 손실 될 수 있으며 손실되지 않더라도 Mac 측으로 전송되지 않을 것입니다. 또한 그것들이 필요했고, Mac 사용자들은 같은 이유로 make 파일을 수정하지 않는 것을 기억해야합니다.

약간의 생각과 인내가 필요하지만 처음에는 실수가있을 것입니다. 그러나 양측에서 지속적인 통합사용하는 경우 이러한 것들은 조기에 흔들리고 결국 사람들은 습관이 될 것입니다.


질문과 직접 ​​관련이 있는지 확실하지 않지만 cmake 프로젝트에서 * .sln을 생성하는 방법에 대한 답변을 찾고 있었는데 다음과 같은 것을 사용할 수 있음을 발견했습니다.

cmake -G "Visual Studio 10"

이 예제는 입력 CMakeLists.txt 파일에서 필요한 VS 2010 파일을 생성합니다.


우리 부서의 빌드 체인을 CMake로 옮겼고, 프로젝트 파일을 사용하고 해당 파일을 솔루션으로 가져 오는 데 익숙한 다른 부서 이후로 몇 가지 내부 문제가있었습니다. 또한 CMake가 Visual Studio 프로젝트 / 솔루션 관리자에 완전히 통합되지 않는다는 불만이 있었기 때문에 파일을 CMakeLists.txt에 수동으로 추가해야했습니다. 이것은 사람들이 익숙한 워크 플로우의 큰 단절이었습니다.

그러나 일반적으로 그것은 매우 부드러운 전환이었습니다. 더 이상 프로젝트 파일을 다룰 필요가 없기 때문에 매우 기쁩니다.

프로젝트에 새 파일을 추가하는 구체적인 워크 플로는 정말 간단합니다.

  1. 파일을 만들고 올바른 위치에 있는지 확인하십시오.
  2. CMakeLists.txt에 파일을 추가합니다.
  3. 짓다.

CMakeLists.txt 파일이 변경된 경우 CMake 2.6이 자동으로 다시 실행됩니다 (그리고 (반) 자동으로 솔루션 / 프로젝트를 다시로드합니다).

소스 외부 빌드를 수행하는 경우 빌드 디렉터리에 소스 파일을 만들지 않도록주의해야합니다 (Visual Studio는 빌드 디렉터리에 대해서만 알고 있기 때문에).


Alex가 말했듯이 매우 잘 작동합니다. 유일한 까다로운 부분은 Visual Studio 내에서가 아니라 cmake 파일을 변경하는 것을 기억하는 것입니다. 따라서 모든 플랫폼에서 워크 플로는 일반 이전 메이크 파일을 사용한 경우와 유사합니다.

그러나 작업하기가 매우 쉽고 cmake가 잘못된 파일을 생성하는 데 문제가 없었기 때문에 너무 걱정하지 않을 것입니다.


CMake는 정말 멋진 Visual Studio .projs/를 생성 할 수 .slns있지만, 항상 / .cmake대신 파일 을 수정해야하는 문제가 있습니다. 현재로서는 다음과 같이 처리하고 있습니다..proj.sln

  1. 모든 소스 파일은로 이동하고 /srcVisual Studio에 표시되는 파일은 .filter.
  2. 프로그래머는 /src기본 프로젝트가 아닌 정의 된 디렉토리에서 작업하는 것을 기억하는 파일을 추가 / 삭제합니다 .
  3. 작업이 끝나면 각 .cmake파일 을 "새로 고침"하는 스크립트를 실행 합니다.
  4. 그는 코드가 재생성 된 환경에서 빌드 될 수 있는지 확인합니다.
  5. 그는 코드를 커밋합니다.

처음에 우리는 그것이 어떻게 될지 조금 두려웠지만, 워크 플로는 정말 잘 작동하고 각 커밋 전에 멋진 차이를 볼 수 있으므로 모든 사람이 자신의 변경 사항이 .cmake파일에 올바르게 매핑되었는지 쉽게 확인할 수 있습니다 .

알아야 할 또 하나의 중요한 점 은 CMake의 "Solution Configurations"에 대한 지원 ( afaik ) 이 없다는 것입니다 . 현재로서는 프로젝트 / 솔루션이있는 두 개의 디렉토리 를 생성해야합니다. 각 빌드 유형 (디버그, 릴리스 등)에 대해 하나씩. 보다 정교한 기능에 대한 직접적인 지원은 없습니다. 즉, 구성간에 전환해도 예상 할 수있는 내용이 제공되지 않습니다.


CMake는 Visual Studio 프로젝트 및 솔루션을 원활하게 생성합니다. CMake 파일을 변경하지 않고도 다양한 Visual Studio 버전에 대한 프로젝트 / 솔루션을 생성 할 수도 있습니다.

소스 파일 추가 및 제거는 소스 파일 CMakeLists.txt목록이있는 파일 을 수정 하고 프로젝트 / 솔루션을 다시 생성하는 문제입니다. 디렉토리의 모든 소스를 찾는 globbing 기능도 있습니다 (주의해서 사용해야하지만).

다음 링크는 CMake 및 Visual Studio 특정 동작을 매우 잘 설명합니다.

CMake 및 Visual Studio


syncProj라는 내 프로젝트를 시작했습니다. 여기에서 문서 / 다운로드 링크 :

https://docs.google.com/document/d/1C1YrbFUVpTBXajbtrC62aXru2om6dy5rClyknBj5zHU/edit# https://sourceforge.net/projects/syncproj/

If you're planning to use Visual studio for development, and currently only C++ is supported.

Main advantage compared to other make systems is that you can actually debug your script, as it's C# based.

If you're not familiar with syncProj, you can just convert your solution / project to .cs script, and continue further development from that point on.

In cmake you will need to write everything from scratch.


Lots of great answers here but they might be superseded by this CMake support in Visual Studio (Oct 5 2016)

참고URL : https://stackoverflow.com/questions/395169/using-cmake-to-generate-visual-studio-c-project-files

반응형