나는 꽤 오랫동안 이것을 고심하고 있었고, cmake에 대한 나의 모험은 내가 확실히 틀렸다는 확신을주는 해킹 된 해결책을 가져왔다. cmake를 사용하여 내 C++ 프로젝트를 구조화하는 올바른 방법은 무엇입니까?
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
내가 (일부 실험 후) 라이브러리를 컴파일하는 CMakeLists 파일을 쓰고, 나는은 lib.a 파일을 생성 할 수 있습니다 : 다음과 같이
나는, 여러 개의 파일로 구성 라이브러리를 만들었습니다. 이제이 코드를 다른 프로젝트의 라이브러리로 포함시키고 lib.hpp의 인터페이스를 통해 액세스하려고합니다. 디렉토리 구조의 관점에서이 작업을 수행하는 가장 좋은 방법은 무엇이며 루트 프로젝트의 CMakeLists.txt에 넣어야하는 것은 무엇입니까?
나의 현재 시도가 명령을 내 현재 프로젝트에 하위 폴더로 -libfolder 추가하고 추가 할 수있다 :
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
내가 만들어 실행하면 라이브러리가 잘 컴파일하지만 project.cpp은 컴파일 할 때, 그것은 codepart1.hpp (project.cpp에서 포함 된 lib.hpp에 포함되어 있음)를 찾을 수 없다는 불평을합니다.
이것이 잘못된 방법이라고 생각하지만, CMake 문서를 보면서이 같은 프로젝트를 설정하는 좋은 지침서를 찾을 수는 없습니다. 도와주세요, CMake 구루!
아마도 cmake per-see에는 도움이되지 않을지 모르지만 전 premake를 살펴 보도록 조언합니다. 그것은 성숙에 가까워지고 cmake에게 많은 이점을줍니다 (하나는 lua를 이미 알고있는 경우 특히 속도가 빨라지기 쉽습니다). http://industriousone.com/what-premake에서 확인할 수 있습니다. – Ylisar
그래서 새 프로젝트에서 이전에 빌드 된 라이브러리를 사용하도록 설정 하시겠습니까? 아니면 sortof 메타 프로젝트에서 빌드 하시겠습니까? – moooeeeep